我正在尝试在我的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。
谢谢!
问题出在所使用的 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
问题只是OpenCV的版本,我使用了2.4.5而不是2.4.6并解决了问题...