【问题标题】:OpenCV crash when attempting to capture default iSight camera尝试捕获默认 iSight 摄像头时 OpenCV 崩溃
【发布时间】:2013-10-03 21:55:27
【问题描述】:

我正在尝试在我的 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。

谢谢!

【问题讨论】:

  • 说的是 cvtColor(即帧)的输入不是彩色图像(它所期望的)。可能是捕获完全失败并且frame 是空的。尝试在 cvtColor 行之前添加imshow("frame",frame);waitKey();。这将帮助您调试。
  • 是的,框架是空的,iSight 摄像头甚至没有打开(没有绿灯)
  • 它有用吗?我在我的旧 Macbook 上看到了一个问题,在重新启动之前,相机会停止使用 OpenCV。看到这个问题后,其他应用可以使用相机吗?
  • 相机本身没有问题,我可以在Skype等中使用它,零问题。我似乎无法在 openCV 中捕获它,它根本无法打开。

标签: c++ opencv


【解决方案1】:

问题在于使用的 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

【讨论】:

  • 感谢您上传您的答案!
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2015-08-18
    • 2012-05-02
    • 1970-01-01
    • 2012-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-01
    相关资源
    最近更新 更多