OpenCV 2.4.4 Java-抓取网络摄像头图片/流(OSX)

我是Stackoverflow和OpenCV编程领域的新手。我已经使用Java的OpenCV绑定(opencv.org官员,而不是JavaCV)进行了一些项目,例如通过ORB和SURF功能识别对象,使用图像。一切都没问题。现在,我将转向视频流中的对象识别。我想从摄像头中获取视频流并应用对象识别。我不是Java专家,所以我在OpenCV中找到了VideoCapture类,但无法从摄像机获取图片。

我正在OSX Mountain Lion中使用OpenCV 2.4.4绑定在Eclipse中运行我的项目。

控制台中的结果:

Hello, OpenCV

Camera OK?

Frame Obtained

Captured Frame Width 0

Invalid memory access of location 0x7fae00000000 rip=0x7fff8b4c5263

代码:

import org.opencv.core.Mat;

import org.opencv.highgui.Highgui;

import org.opencv.highgui.VideoCapture;

public class Webcam {

public static void main (String args[]){

System.out.println("Hello, OpenCV");

// Load the native library.

System.loadLibrary("opencv_java244");

VideoCapture camera = new VideoCapture(0);

camera.open(0); //Useless

if(!camera.isOpened()){

System.out.println("Camera Error");

}

else{

System.out.println("Camera OK?");

}

Mat frame = new Mat();

//camera.grab();

//System.out.println("Frame Grabbed");

//camera.retrieve(frame);

//System.out.println("Frame Decoded");

camera.read(frame);

System.out.println("Frame Obtained");

/* No difference

camera.release();

*/

System.out.println("Captured Frame Width " + frame.width());

Highgui.imwrite("camera.jpg", frame);

System.out.println("OK");

}

}

回答:

问题很简单,就是相机需要时间来初始化。我已经添加

Thread.sleep(1000);

VideoCapture camera = new VideoCapture(0);

以上是 OpenCV 2.4.4 Java-抓取网络摄像头图片/流(OSX) 的全部内容, 来源链接: utcz.com/qa/401635.html

回到顶部