C++ 尝试捕获默认iSight相机时OpenCV崩溃
我正试图让openCV在我的Macbook Pro(10.8.5,retina型号)上运行,我想使用默认的iSight摄像头进行输入,因为我不想随身携带或购买USB摄像头(如果不需要的话) 我正在使用OpenCV用户文档中的示例程序:C++ 尝试捕获默认iSight相机时OpenCV崩溃,c++,opencv,C++,Opencv,我正试图让openCV在我的Macbook Pro(10.8.5,retina型号)上运行,我想使用默认的iSight摄像头进行输入,因为我不想随身携带或购买USB摄像头(如果不需要的话) 我正在使用OpenCV用户文档中的示例程序: #include "cv.h" #include "highgui.h" using namespace cv; int main(int, char**) { VideoCapture cap(0); if(!cap.isOpened())
#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中引入的任何错误。要从自制的OSX上获得2.4.5版本,请执行以下操作:
$ brew versions opencv
$ cd /usr/local/Library/Taps/homebrew-science
将git版本签出到旧版本:
$ git checkout ae74fe9 opencv.rb
删除opencv的原始版本(可能是2.4.6)
安装2.4.5版本:
$ brew install opencv
问题在于使用的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)
安装2.4.5版本:
$ brew install opencv
问题只是OpenCV的版本,我使用2.4.5而不是2.4.6和问题解决…问题只是OpenCV的版本,我使用2.4.5而不是2.4.6和问题解决…据说cvtColor(即帧)的输入不是彩色图像(它期望的)。可能是捕获完全失败,并且
frame
是空的。尝试添加imshow(“frame”,frame);waitKey()代码>在cvtColor行之前。这将帮助你调试东西。是的,框架是空的,iSight相机甚至没有打开(没有绿灯)它曾经工作过吗?我在旧版Macbook上看到一个问题,在重新启动之前,摄像头将停止使用OpenCV。在您看到此问题后,其他应用程序是否可以使用此摄像头?摄像头本身没有问题,我可以在Skype等中使用,没有问题。我似乎无法在openCV中从中捕获,它根本没有打开。据说,cvtColor(即帧)的输入不是彩色图像(它期望的)。可能是捕获完全失败,并且frame
是空的。尝试添加imshow(“frame”,frame);waitKey()代码>在cvtColor行之前。这将帮助你调试东西。是的,框架是空的,iSight相机甚至没有打开(没有绿灯)它曾经工作过吗?我在旧版Macbook上看到一个问题,在重新启动之前,摄像头将停止使用OpenCV。在您看到此问题后,其他应用程序是否可以使用此摄像头?摄像头本身没有问题,我可以在Skype等中使用,没有问题。我似乎无法在openCV中捕获,它根本无法打开。谢谢上传您的答案!谢谢上传你的答案!