我遇到了一个问题,让标准的开放式CV人脸检测(facedetect
)正常工作。网络摄像头亮起,但注意到了,程序是用这样一个小尺寸的窗口启动的:
我的工作是excellent blog post和sample code。我在这里做了什么:
安装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
使用标准分类器运行facedetect
示例。
cd ~/opencv-2.4.6/samples/c
chmod +x build_all.sh
./build_all.sh
./facedetect --cascade="../../data/haarcascades/haarcascade_frontalface_alt.xml"
我可以修改C ++示例代码并重新编译和运行,但我不知道问题是什么。
有人有建议吗?
更新问题是来自cvQueryFrame
的图片为空:
IplImage* iplImg = cvQueryFrame( capture );
frame = iplImg;
if( frame.empty() )
{
cout << "FRAME EMPTY\n"; // This is getting logged
break;
}
更新:当源是静态图像时,它可以正常工作,因此问题与网络摄像头源有关。
答案 0 :(得分:5)
您可以尝试本地化问题,您是否尝试从网络摄像头捕获图像并显示它,而不运行任何其他操作?
似乎有问题从网络摄像头通过OpenCV捕获图像,这种问题可能由于硬件而发生,例如我的朋友macbook pro捕获的图像是320x240,而我的是640x480。我的朋友刚从相机设置改变了一个简单的配置,他的问题就解决了。你的问题可能是这样的。
或者您可以尝试使用某些图像运行面部检测器,您需要更改代码,以便从磁盘加载图像并尝试检测它们上的面部。如果它不能以这种方式工作,我们可以说你的问题不是摄像头,有一个更大的问题,或者如果它有效,我们可以肯定地说问题是网络摄像头。
修改强>
如果您使用的是IplImage类型,请确保从相机中获取更多图像,有时第一张图像为空。