JAVACV videocapture read停止拍摄新照片,只是重复相同的照片,为什么要这样做?

JAVACV videocapture read停止拍摄新照片,只是重复相同的照片,为什么要这样做?,java,opencv,Java,Opencv,我目前正在使用Java Open Cv库从相机上拍摄一系列连续图像。然后将捕获的帧传递给另一个保存图像的线程。 但是,由于某种原因,在拍摄了一定数量的照片后,它会停止拍摄新的图像,而只是重复上一张图像 如果我让它取10,它停在5,对于20,它停在11,所以每次的值都不一样 代码当前位于线程内部,但我认为这不会以任何方式影响它 这是当前的代码 System.loadLibrary(Core.NATIVE_LIBRARY_NAME); VideoCapture cam

我目前正在使用Java Open Cv库从相机上拍摄一系列连续图像。然后将捕获的帧传递给另一个保存图像的线程。 但是,由于某种原因,在拍摄了一定数量的照片后,它会停止拍摄新的图像,而只是重复上一张图像

如果我让它取10,它停在5,对于20,它停在11,所以每次的值都不一样

代码当前位于线程内部,但我认为这不会以任何方式影响它

这是当前的代码

        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        VideoCapture camera = new VideoCapture(0);
        camera.open(0);

        Mat frame = new Mat();

        for (int i = 0; i < 20; i++) {

            camera.read(frame);


            fileName = "Captures/" + timetoNano + ".png";
            fileTime = timetoNano;
            fileToSave = frame;

            ImageProperties newProperties = new ImageProperties(fileName,
                    fileToSave, fileTime);
            bufferImageProps.add(newProperties);
        }
System.loadLibrary(Core.NATIVE\u LIBRARY\u NAME);
VideoCapture摄像机=新的VideoCapture(0);
照相机。打开(0);
垫架=新垫();
对于(int i=0;i<20;i++){
摄像机读取(帧);
fileName=“Captures/”+timetoNano+“.png”;
fileTime=timetoNano;
fileToSave=frame;
ImageProperties newProperties=新的ImageProperties(文件名,
fileToSave,fileTime);
bufferImageProps.add(newProperties);
}
如果我把camera.open(0)放在for循环中,这确实解决了问题,但是它确实会大大降低性能,我认为它不必在那里,因为它一直工作到这个“断点”


任何反馈都将不胜感激。

我想我已经找到了解决方案。我移动了线

Mat frame = new Mat();
在for循环的内部

因此,这意味着每次捕获一个帧时,都会将其捕获到一个空帧上,这似乎可以解决问题