0

我在 MATLAB R2015a 中使用此代码:

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

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

当我运行这一行:grabber.start()时,会打开一个新窗口“视频源”。
我第一次使用代码时它不会打开。

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

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

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

我该如何解决?

4

1 回答 1

0

正如@Samuel Audet 提到的那样,我切换到VideoInputFrameGrabber(for 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();
于 2015-08-27T11:05:45.107 回答