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

标签 java macos opencv webcam

我是 Stackoverflow 和 OpenCV 编程领域的新手。 我用 OpenCV Bindings for Java 做了一些项目(opencv.org 官员,不是 JavaCV),比如通过 ORB 和 SURF 功能进行对象识别,处理图像。一切还好。 现在我转向视频流中的对象识别。我想从网络摄像头抓取流并应用对象识别。 我不是 Java 高手,所以我在 OpenCV 中找到了 VideoCapture 类,但我无法从相机中获取图片。

我在 OSX Mountain Lion 中使用 OpenCV 2.4.4 绑定(bind)在 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);

关于java - OpenCV 2.4.4 Java - 抓取网络摄像头图片/流 (OSX),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15835424/

相关文章:

java - 如何检查Java中的整数溢出?

python - macOS tkinter : how does filetypes of askopenfilename work

java - Yocto 构建上的 Oracle JDK 安装

Python-opencv 导入错误,已安装包

c++ - 传递强硬的论据

java - java中的一种方法使居中、左右填充对齐

java - 在制作Android SDK时,有没有一种方法可以不断更新开发人员的值,而无需他们传递 View ?

java - 在数组列表中存储多个字符串

macos - X2Go 客户端无法启动 X11 服务器。 (macOS 卡特琳娜)

macos - OSX 应用程序和命令行工具之间的 NSConnection