在Mac山狮上运行开放CV面部检测的问题

时间:2013-10-12 17:56:27

标签: c++ c macos opencv

我遇到了一个问题,让标准的开放式CV人脸检测(facedetect)正常工作。网络摄像头亮起,但注意到了,程序是用这样一个小尺寸的窗口启动的:

enter image description here

我的工作是excellent blog postsample code。我在这里做了什么:

  1. 安装OpenCV&获取OpenCV源

    brew tap homebrew/science
    brew install --with-tbb opencv
    wget http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.4.6/opencv-2.4.6.tar.gz
    tar xvzf opencv-2.4.6.tar.gz
    
  2. 使用标准分类器运行facedetect示例。

    cd ~/opencv-2.4.6/samples/c
    chmod +x build_all.sh
    ./build_all.sh
    ./facedetect --cascade="../../data/haarcascades/haarcascade_frontalface_alt.xml"
    
  3. 我可以修改C ​​++示例代码并重新编译和运行,但我不知道问题是什么。

    有人有建议吗?

    更新问题是来自cvQueryFrame的图片为空:

    IplImage* iplImg = cvQueryFrame( capture );
    frame = iplImg;
    if( frame.empty() ) 
    {
        cout << "FRAME EMPTY\n";  // This is getting logged
        break;
    }
    

    更新:当源是静态图像时,它可以正常工作,因此问题与网络摄像头源有关。

    Lena

1 个答案:

答案 0 :(得分:5)

您可以尝试本地化问题,您是否尝试从网络摄像头捕获图像并显示它,而不运行任何其他操作?

似乎有问题从网络摄像头通过OpenCV捕获图像,这种问题可能由于硬件而发生,例如我的朋友macbook pro捕获的图像是320x240,而我的是640x480。我的朋友刚从相机设置改变了一个简单的配置,他的问题就解决了。你的问题可能是这样的。

或者您可以尝试使用某些图像运行面部检测器,您需要更改代码,以便从磁盘加载图像并尝试检测它们上的面部。如果它不能以这种方式工作,我们可以说你的问题不是摄像头,有一个更大的问题,或者如果它有效,我们可以肯定地说问题是网络摄像头。

修改

如果您使用的是IplImage类型,请确保从相机中获取更多图像,有时第一张图像为空。