尝试捕获默认iSight摄像头时OpenCV崩溃

时间:2013-10-03 21:55:27

标签: c++ opencv

我想在我的Macbook Pro(10.8.5,视网膜型号)上运行openCV,我想使用默认的iSight摄像头进行输入,因为我不想随身携带或购买USB摄像头我不需要。

我正在使用OpenCV用户文档中的示例程序:

#include "cv.h"
#include "highgui.h"

using namespace cv;

int main(int, char**)
{
    VideoCapture cap(0);
    if(!cap.isOpened()) return -1;

    Mat frame, edges;
    namedWindow("edges",1);
    for(;;)
    {
        cap >> frame;
        cvtColor(frame, edges, CV_BGR2GRAY);
        GaussianBlur(edges, edges, Size(7,7), 1.5, 1.5);
        Canny(edges, edges, 0, 30, 3);
        imshow("edges", edges);
        if(waitKey(30) >= 0) break;
    }
    return 0;
}

当我运行这个程序时,程序失败了一个断言:

OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cvtColor, file /Users/dadair/opencv/src/modules/imgproc/src/color.cpp, line 3402
libc++abi.dylib: terminate called throwing an exception

任何人都可以解释为什么这会失败,我能做些什么来解决这个问题?我正在运行OpenCV 2.4.6。

谢谢!

2 个答案:

答案 0 :(得分:3)

问题在于使用的openCV版本(2.4.6)。要访问iSight摄像头,必须使用2.4.5,直到修复了2.4.6中引入的任何错误。从Homebrew获得OSX 2.4.5:

$ brew versions opencv
$ cd /usr/local/Library/Taps/homebrew-science

结帐git版本到旧版本:

$ git checkout ae74fe9 opencv.rb

删除opencv的原始版本(可能是2.4.6)

$ brew unlink opencv

安装2.4.5版本:

$ brew install opencv

答案 1 :(得分:1)

问题只是OpenCV的版本,我使用的是2.4.5而不是2.4.6并解决了问题......