C++ 在Mac mountain lion上运行open CV人脸检测时出现问题
我遇到了一个问题,标准的OpenCV人脸检测(C++ 在Mac mountain lion上运行open CV人脸检测时出现问题,c++,c,macos,opencv,C++,C,Macos,Opencv,我遇到了一个问题,标准的OpenCV人脸检测(facedetect)无法正常工作。网络摄像头灯亮起,但没有发生任何情况,程序启动时有一个小窗口,如下所示: 我在一家公司工作。以下是我所做的: 安装OpenCV并获取OpenCV源代码 brew tap homebrew/science brew install --with-tbb opencv wget http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.4
facedetect
)无法正常工作。网络摄像头灯亮起,但没有发生任何情况,程序启动时有一个小窗口,如下所示:
我在一家公司工作。以下是我所做的:
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"
cvQueryFrame
中的图像为空:
IplImage* iplImg = cvQueryFrame( capture );
frame = iplImg;
if( frame.empty() )
{
cout << "FRAME EMPTY\n"; // This is getting logged
break;
}
IplImage*iplImg=cvQueryFrame(捕获);
帧=iplImg;
if(frame.empty())
{
您可以尝试定位问题,您是否尝试从网络摄像头捕获图像并显示它,而不运行任何其他操作
通过OpenCV从网络摄像头捕获图像似乎有问题,这种问题可能是硬件造成的,例如,在我的朋友macbook pro上捕获的图像是320x240,在我的朋友macbook pro上是640x480。我的朋友刚刚更改了摄像头设置的简单配置,他的问题就解决了。你的问题可能是我喜欢这样
或者你可以试着用一些图像运行人脸检测仪,你需要更改代码,使它从你的磁盘加载一个图像,并尝试在上面检测人脸。如果它不起作用,我们可以说你的问题不是摄像头,而是更大的问题,或者如果它起作用,我们可以肯定地说问题是网络摄像头
编辑
如果您使用的是IplImage类型,请确保从相机获取多张图像,有时第一张图像是空的。您可以尝试定位问题,您是否尝试从网络摄像头捕获图像并显示它,而不运行任何其他操作
通过OpenCV从网络摄像头捕获图像似乎有问题,这种问题可能是硬件造成的,例如,在我的朋友macbook pro上捕获的图像是320x240,在我的朋友macbook pro上是640x480。我的朋友刚刚更改了摄像头设置的简单配置,他的问题就解决了。你的问题可能是我喜欢这样
或者你可以试着用一些图像运行人脸检测仪,你需要更改代码,使它从你的磁盘加载一个图像,并尝试在上面检测人脸。如果它不起作用,我们可以说你的问题不是摄像头,而是更大的问题,或者如果它起作用,我们可以肯定地说问题是网络摄像头
编辑
如果您使用的是IplImage类型,请确保从相机中获取多张图像,有时第一张图像是空的。这是由于OpenCV中的一个错误造成的-它已被修复(此处的错误报告),但homebrew/science中的版本来自修复之前
您可以通过编辑opencv的brew公式(基于此请求)获得并安装更新版本
编辑/usr/local/Library/Formula/opencv.rb,并替换以下行:
url 'http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.4.6.1/opencv-2.4.6.1.tar.gz'
sha1 'e015bd67218844b38daf3cea8aab505b592a66c0'
用这些
url 'https://github.com/Itseez/opencv/archive/2.4.7.1.tar.gz'
sha1 'b6b0dd72356822a482ca3a27a7a88145aca6f34c'
那就做吧
brew remove opencv
brew install opencv
在小牛身上工作(至少对我来说),应该在山狮身上工作
更新:homebrew/science中的OpenCV版本现已更新,因此此答案现在已过时
brew upgrade opencv
将使homebrew获得最新版本,并带有固定的网络摄像头捕获。这是由于OpenCV中的一个错误导致的-它已被修复(此处的错误报告),但homebrew/science中的版本来自修复之前
您可以通过编辑opencv的brew公式(基于此请求)获得并安装更新版本
编辑/usr/local/Library/Formula/opencv.rb,并替换以下行:
url 'http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.4.6.1/opencv-2.4.6.1.tar.gz'
sha1 'e015bd67218844b38daf3cea8aab505b592a66c0'
用这些
url 'https://github.com/Itseez/opencv/archive/2.4.7.1.tar.gz'
sha1 'b6b0dd72356822a482ca3a27a7a88145aca6f34c'
那就做吧
brew remove opencv
brew install opencv
在小牛身上工作(至少对我来说),应该在山狮身上工作
更新:homebrew/science中的OpenCV版本现已更新,因此此答案现在已过时
brew upgrade opencv
将使homebrew获得最新版本,并具有固定的网络摄像头捕获功能。很好的提示,我让好的老lena工作了!:)所以问题在于网络摄像头/硬件。您还记得您朋友更改设置配置的任何细节吗?很遗憾,我不记得了,但我认为您可以尝试使用外部网络摄像头?您需要做的一切将其从USB插入并更改代码,以便使用设备id 1而不是0(默认值)初始化cv::Capture
我还发现了一个相机偏好,但不确定它是否会为你工作……我想说最后一件事,如果你不需要请不要使用旧的C API,使用更好的C++ API,甚至可以帮助你克服你的问题。<代码> CV::Mat框架;CV::捕获捕获(0)这是你从相机中获取图像所需的所有代码。这比使用<代码> IplImage < /C> >和 CVQueReals> < /C> >要好多了。希望你能很快地解决你的问题:)是的。如果你想要C++,API,你所使用的所有类都应该在OpenCV2下,而不是OpenCV。(我说的是include文件)。例如,#include
。从您的帖子中可以清楚地看到您正在使用C API,因为您的路径是/opencv-2.4.6/samples/C,请尝试cpp而不是C。祝您好运:)很好的提示,我有很好的老lena在工作!:)所以问题在于网络摄像头/硬件。你还记得你朋友更改设置配置的任何细节吗?不幸的是,我不记得了,但我认为你可以尝试使用外部网络摄像头?你所需要做的就是从USB插入它并更改代码,以便初始化cV::用设备ID 1代替0(默认值)捕获.<代码>,我也发现了一个相机首选项,但不确定它是否会为你工作。我想说最后一件事,如果你不需要使用旧的C API,使用更好的C++ API,甚至可以帮助你克服你的问题。<代码> CV::Mat框架;CV::捕获CA