OpenCV Java-空白网络摄像头捕获

OpenCV Java-空白网络摄像头捕获,java,opencv,webcam,Java,Opencv,Webcam,我在尝试使用Java在OpenCV中捕获网络摄像头时遇到了一个奇怪的问题。我使用的是:中的Imshow方法,我使用的是一个稍加修改的示例代码。问题是:我在尝试捕获时只得到最后一帧,之前的帧都是空白的,无论for循环中的变量有多大 在这个例子中,我应该在15秒内得到10帧,但我在15秒后得到一帧。你知道这个代码有什么问题吗 如果我使用Highgui.imwrite方法,我会在工作区文件夹中得到10个文件 public class WebcamThread extends Thread{ publ

我在尝试使用Java在OpenCV中捕获网络摄像头时遇到了一个奇怪的问题。我使用的是:中的Imshow方法,我使用的是一个稍加修改的示例代码。问题是:我在尝试捕获时只得到最后一帧,之前的帧都是空白的,无论for循环中的变量有多大

在这个例子中,我应该在15秒内得到10帧,但我在15秒后得到一帧。你知道这个代码有什么问题吗

如果我使用Highgui.imwrite方法,我会在工作区文件夹中得到10个文件

public class WebcamThread extends Thread{

public WebcamThread() {
    capture();
}


private static void capture() {
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

    VideoCapture vcam = new VideoCapture(0);
    Imshow im = new Imshow("Camera capture in OpenCV");
    Mat m = new Mat();

    vcam.set(Highgui.CV_CAP_PROP_FRAME_WIDTH, 800);
    vcam.set(Highgui.CV_CAP_PROP_FRAME_HEIGHT, 600); 

    // loop until VideoCamera is Available
    while (vcam.isOpened() == false);

    System.out.println("Found webcam: " + vcam.toString());

    // Bug Fix: Loop until initial image frames are empty
    while (m.empty()) {
        vcam.retrieve(m);
    }

    im.showImage(m);

    for (int i=0; i<10; i++) {
        vcam.retrieve(m);           

        System.out.println("Displaying " + i + " frame");
        try {
            Thread.sleep(1500);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

}/P>在C++中,至少要得到任何显示,必须添加CV::WaITKEY调用,因为该函数运行在GUI事件循环中。Java OpenCV中有这样的东西吗?如果是这样的话,也许可以尝试添加它。我的问题有点奇怪。奇怪的是:的代码在我的笔记本电脑上运行良好。