2

ウェブカメラを常にキャプチャして、キャンバスに表示したいと考えています。画像の保存は問題ありません。毎秒写真を撮ります。しかし、 canvas.showImage() は機能しません。画面が空白のままです。コンソールには、各フレームで「カメラをクリーンアップしました」と表示されます。

ファーストクラス:

public class StartUp {
public static void main(String[] args) {
    CanvasFrame canvas = new CanvasFrame("Cam");
    canvas.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
    CaptureImage captureimage = new CaptureImage();
    while(true){
        try {
            IplImage img = captureimage.captureFrame();
            canvas.showImage(img);
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

}
}

セカンドクラス:

public class CaptureImage {

public IplImage captureFrame() {
    final OpenCVFrameGrabber grabber = new OpenCVFrameGrabber(0);
    try {
        grabber.start();
        IplImage img = grabber.grab();
        if (img != null) {
            cvSaveImage("Image.jpg",img);     
            return img;
        }

    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}
}
4

2 に答える 2

2

このコードを使用してWebカメラをキャプチャしてみてください。このコードを実行する前にライブラリをロードしてください。(JavaCV jarファイルなど)

import com.googlecode.javacv.CanvasFrame;
import com.googlecode.javacv.FrameGrabber.Exception;
import com.googlecode.javacv.OpenCVFrameGrabber;
import static com.googlecode.javacv.cpp.opencv_core.*;

public class capture{

CanvasFrame frame,fr;
IplImage image,im;
OpenCVFrameGrabber grabber,gr;
public capture() throws Exception {
    frame=new CanvasFrame("Cam 1");
    grabber=new  OpenCVFrameGrabber(0);
     grabber.start();
     while (((frame.isVisible()) && (image = grabber.grab()) != null)){
         //cvFlip(image,image,1); if needed to flip.

         frame.showImage(image);


     }
     frame.setDefaultCloseOperation(1);
     frame.setDefaultCloseOperation(CanvasFrame.EXIT_ON_CLOSE);
}

}

于 2012-12-16T18:22:52.770 に答える