Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 尝试捕获默认iSight相机时OpenCV崩溃_C++_Opencv - Fatal编程技术网

C++ 尝试捕获默认iSight相机时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())

我正试图让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()) 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中捕获,它根本无法打开。谢谢上传您的答案!谢谢上传你的答案!