0

OpenCV を使用して、Web カメラを使用して写真を撮るプログラムがあります。Windows では魅力的に動作しますが、OSx では動作しません。Webcam ビューが表示されるフレームは空のままです。写真を撮ると、まるでウェブカメラが見つからなかったかのように、黒い空白が表示されます

public void run(){
        try {
            grabber = new VideoInputFrameGrabber(0); 
            grabber.start();
            while (active) {
                IplImage originalImage = grabber.grab();
                Label.setIcon(new ImageIcon( originalImage.getBufferedImage() ));
            }
            grabber.stop();
            grabber.flush();

        } catch (Exception ex) {
            //Logger.getLogger(ChPanel.class.getName()).log(Leve l.SEVERE, null, ex);
        }

    }

    public BufferedImage saveImage(){
        IplImage img;
        try {
            //capture image
            img = grabber.grab();
            // save to file
            File outputfile = new File(Project.getInstance().getFileURLStr() + " capture" + fotoCount++ + ".jpg");
            ImageIO.write(img.getBufferedImage(), "jpg", outputfile);    

            //get file and set it in the project library
            BufferedImage ImportFile = ImageIO.read(outputfile);
            Project p = Project.getInstance();
            MainScreen ms = MainScreen.getInstance();
            ImageIcon takenPhoto = new ImageIcon(ImportFile);
            p.setNextImage(takenPhoto);
            ms.setPanels();
            return ImportFile;
        } catch (com.googlecode.javacv.FrameGrabber.Exception e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;

    }

これを解決する方法を知っている人はいますか?ウェブカメラを使用する権利について何か疑いがあります。

4

2 に答える 2

1
grabber = new VideoInputFrameGrabber(0); 

ここ0に指定されていますCapture device number 0

0 番目のデバイスがビデオ キャプチャに使用できない可能性があります

このコードを使用して、デバイスと番号のリストをそれぞれ取得します。

import com.googlecode.javacv.cpp.videoInputLib.videoInput;
class Main {


     public static void main(String[] args) {
           int n=videoInput.listDevices();
           for(int i=0;i<n;i++)
        {
            System.out.println(i+" = "+videoInput.getDeviceName(i));

        }

}
}

次に、そのデバイスの番号を指定します

grabber = new VideoInputFrameGrabber(1); // 0 or 1 or 2
于 2013-06-12T09:03:04.003 に答える
0

ウェブカメラと対話するには、このライブラリwebcam-captureを使用します。これにより、maven を使用して openCV 依存関係を簡単に追加できます。これは素晴らしいライブラリです

于 2013-06-12T09:11:39.020 に答える