我想让我的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。
谢谢!
说的是,输入到cvtColor(即帧)不是彩色图像(它期望的)。 可能是因为捕获失败,并且'frame'是空的。 尝试在cvtColor行之前添加'imshow(“frame”,frame); waitKey();'。这将帮助您调试。 – kamjagin
是的框架是空的,iSight相机甚至没有打开(没有绿灯) – adairdavid
它曾经工作过吗?我在旧版Macbook上看到一个问题,在重新启动之前,相机将停止使用OpenCV。看到这个问题后,其他应用程序可以使用相机吗? – Spaceghost