2013-10-03 56 views
1

我想让我的Macbook Pro(10.8.5,视网膜模型)上运行openCV,我想用默认的iSight摄像头输入,因为我不想如果我不需要,随身携带或购买USB摄像头。OpenCV当试图捕捉默认的iSight摄像头时崩溃

我使用的示例程序从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。

谢谢!

+0

说的是,输入到cvtColor(即帧)不是彩色图像(它期望的)。 可能是因为捕获失败,并且'frame'是空的。 尝试在cvtColor行之前添加'imshow(“frame”,frame); waitKey();'。这将帮助您调试。 – kamjagin

+0

是的框架是空的,iSight相机甚至没有打开(没有绿灯) – adairdavid

+0

它曾经工作过吗?我在旧版Macbook上看到一个问题,在重新启动之前,相机将停止使用OpenCV。看到这个问题后,其他应用程序可以使用相机吗? – Spaceghost

回答

3

问题出在使用openCV的版本(2.4.6)。要访问iSight摄像头,必须使用2.4.5,直到2.4.6中引入的任何错误都被修复。要在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 
+0

感谢您上传您的答案! –

1

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