Webcam框架在Java中不能用于macbook

我刚刚在我的Mac Air上安装了第一次opencv,我一直试图从内置在屏幕上的相机中获取输入信息。 据我所知,我有正确运行在Eclipse中的库,因为我每次尝试调用任何方法时都不会发生大量错误。 然而,现在发生的情况是网络摄像头出现问题,这看起来是正确创建的,传递给构造函数的值为0(1-50返回任何内容,-1相信是默认值)。 但是当我尝试用它来取回框架时,垫子总是空的。

据我所知,似乎我能够访问摄像头,但是在代码之间会发生某种断开,并能够实际激活摄像头以拍摄视频。 如果它很重要,则表示大多数节目的摄像机处于活动状态的灯一直保持不活动状态。

相关代码在下面发布。 我将非常感谢您可能拥有的任何洞察力,或者在java中使用代码从Java摄像头中获取图像的示例。 谢谢!

    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

    VideoCapture camera = new VideoCapture(0);
    try {
        Thread.sleep(1000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }


    //camera.open(0); //Useless
    if(!camera.isOpened()){
        System.out.println("Camera broken");
    }
    else{
        System.out.println("Camera OK!");
    }

    Mat frame = new Mat();

    camera.read(frame);

    System.out.println("width:" + frame.width());

    Highgui.imwrite("myframe.png", frame);

输出是:

Camera OK!
width:0
libpng warning: Image width is zero in IHDR
libpng warning: Image height is zero in IHDR
libpng error: Invalid IHDR data
Cleaned up camera.

自问这个问题以来已经有一段时间了,但由于我有基本相同的问题,所以我会发布一个解决方案(在这里找到)(对于一个愚蠢的问题,这实际上是一个相当简单的修复):

相机需要时间进行初始化(不清楚硬件细节是什么,但是你去了哪里)。 为了解决它,我只是添加Thread.sleep(1000),并开始工作。 稍微好一点的修复可能是将其封装在一个循环中,该循环每隔1000ms重试一次,直到返回的Mat不为空。

希望有人从中受益:-)

编辑:我应该先读你的代码。 愚蠢的我,道歉。 这个问题与我的看法非常相似,所以我认为它是一样的。

链接地址: http://www.djcxy.com/p/83777.html

上一篇: Webcam frame not working on macbook in Java

下一篇: OpenCV + Ubuntu 11.04 + Macbook Pro: Can't initialize webcam?