MATLAB 中的 OpenCVFrameGrabber javacv 不起作用

OpenCVFrameGrabber javacv in MATLAB doesnt work

我在 MATLAB R2015a 中使用此代码:

javaaddpath('javacv.jar')
import org.bytedeco.javacv.*
grabber = OpenCVFrameGrabber(0)
grabber.start()
img = grabber.grab()

我第一次使用这个代码,它工作,打开相机并抓取一些图像。
在我使用 grabber.stop() 之后,代码不再有效。
即使重新启动 MATLAB,并确保我可以在其他程序中打开相机并确保相机可用。

当我运行这一行:grabber.start(),一个新的window 'Video Source'被打开。
当我第一次使用代码时它不会打开。


然后我按确定,出现异常:

Java exception occurred:
org.bytedeco.javacv.FrameGrabber$Exception:
cvCreateCameraCapture() Error: Could not create
camera capture.

    at
    org.bytedeco.javacv.OpenCVFrameGrabber.start(OpenCVFrameGrabber.java:179)

我该如何解决?

作为@Samuel Audet 作为提及, 我切换到 VideoInputFrameGrabber( 对于 windows )

对于 linux 我们需要使用 FrameGrabber.createDefault(0) ,0 是设备索引,因为网络摄像头默认为 0

现在代码看起来像那样,并且可以工作。 (也许是我第一次用的??)

javaaddpath('javacv.jar')
import org.bytedeco.javacv.*
grabber = VideoInputFrameGrabber(0)
grabber.start()
img = grabber.grab()

编辑:

如@Samuel Audet 所述,
对于跨平台代码,我切换到 FrameGrabber.createDefault()

javaaddpath('javacv.jar');
import org.bytedeco.javacv.*
grabber = FrameGrabber.createDefault(0);
grabber.start();
img = grabber.grab();