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

Rob*_*ert 1 c c++ macos opencv

我遇到了一个问题,让标准的开放CV面部检测(facedetect)工作.网络摄像头亮起,但注意到发生,程序启动时有一个像这样的小尺寸窗口:

在此输入图像描述

我正在一篇优秀的博客文章示例代码中工作.我在这里做了什么:

  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
    
    Run Code Online (Sandbox Code Playgroud)
  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"
    
    Run Code Online (Sandbox Code Playgroud)

我可以修改C ​​++示例代码并重新编译和运行,但我不知道问题是什么.

有没有人有建议?

更新问题是图像来自cvQueryFrame空:

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

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

莉娜

gun*_*yim 5

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

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

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

编辑

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

  • 我想说最后一件事,如果您不必请不要使用旧的C API并使用更好的C++ API,即使这可能有助于您克服您的问题.`cv :: Mat frame; cv ::捕获捕获(0); capture >> frame;`这是从摄像机获取图像所需的所有代码.这比使用`IplImage`和`cvQueryFrame`要好得多.希望你能尽快解决你的问题:) (2认同)