在Mac OS X 10.6.3上使用HandVU和OpenCV

时间:2010-04-13 07:12:22

标签: macos opencv segmentation-fault

我尝试使用OpenCV来使用HandVU,但是当我尝试运行“hvOpenCV config / default.conductor”时,我得到了“分段错误”。有人知道这个问题吗?

macbook:handvu-beta3 User$ hvOpenCV config/default.conductor 
will load conductor from file:
config/default.conductor
Segmentation fault

我在Mac OS X 10.6.3上通过{​​{3}}安装了OpenCV,通过http://opencv.willowgarage.com/wiki/Mac_OS_X_OpenCV_Port安装了HandVU

我认为这是opencv的一个问题,因为如果我试图运行peopledetect示例,我也会遇到分段错误。

macbook:c User$ ./peopledetect pic1.png
Segmentation fault

如果我尝试运行facedetect示例,我也会收到错误:

macbook:c User$ ./facedetect --cascade="../../haarcascades/haarcascade_frontalface_alt.xml" 
Xlib:  extension "RANDR" missing on display "/tmp/launch-WUMho1/org.x:0".

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

我终于在MacOSX 10.6上编译了OpenCV,这可能解决了这个问题......

首先,从http://opencv.willowgarage.com/wiki/Mac_OS_X_OpenCV_Port开始,通过发出

在i386模式下编译
svn co https://code.ros.org/svn/opencv/trunk/opencv
cd opencv # the directory containing INSTALL, CMakeLists.txt etc.
mkdir build
cd build
cmake -D CMAKE_OSX_ARCHITECTURES=i386 -D CMAKE_C/CXX_FLAGS=-m32 -D WITH_FFMPEG=OFF -D BUILD_EXAMPLES=ON -D BUILD_LATEX_DOCS=ON ..
make -j2
sudo make install

最终,我不得不重建一些端口:

sudo port install ilmbase +universal
port provides /opt/local/lib/libIlmImf.dylib
sudo port install openexr +universal

并重新编译openCV

然后我可以运行python示例

cd ../samples/python/
python camera.py

facedetect没有错误(和网络摄像头一起工作)。

答案 1 :(得分:0)

使用QTKit和Cocoa编译OpenCV,然后将其与HandVu一起使用。如果您使用的是Mac OSX 10.6.4及更高版本,请按照以下步骤操作。 (我假设你已经设置了PKG_CONFIG_PATH)

  1. 使用QTKit和Cocoa编译OpenCV(不要在cmake配置中选择WITH_QUICKTIME和WITH_CARBON选项)。另外,如果你有TBB,可以选择使用TBB。

  2. 获取HandVu源,然后更改以下文件:

    • handvu/HandVu.h(将#include "cv.h"替换为#include "opencv2/opencv.hpp"并删除“highgui.h”)
    • handvu / OpticalFlow.h(将#include“cv.h”替换为#include“opencv2 / opencv.hpp”并删除“highgui.h”)
    • handvu / GestureServer.cpp(第255行,用SO_NOSIGPIPE替换MSG_NOSIGNAL)
    • hv_OpenCV / hv_OpenCV.cpp(将#include“cv.h”替换为#include“opencv2 / opencv.hpp”并删除“highgui.h”并使用以下代码替换第185行上的代码:< / p>

      int success = cvNamedWindow( "HandVu", CV_WINDOW_AUTOSIZE );
      //  if (success==0) {
      //    printf("can't open window - did you compile OpenCV with highgui support?");
      //    return -1;
      //  }