2010-04-13 99 views
1

我试图用OpenVV用户HandVU,但是当我试图运行“hvOpenCV config/default.conductor”时,出现“Segmentation fault”。有人知道这个问题吗?在Mac OS X上使用HandVU与OpenCV 10.6.3

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

我通过http://opencv.willowgarage.com/wiki/Mac_OS_X_OpenCV_Port OpenCV的安装在Mac OS X 10.6.3和HandVU通过http://www.movesinstitute.org/~kolsch/HandVu/doc/InstallationLinux.html#source

我认为这是与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". 

有人能帮助我吗?

回答

0

我终于到MacOSX上10.6编译OpenCV的,这可能会解决这个问题...

首先,从http://opencv.willowgarage.com/wiki/Mac_OS_X_OpenCV_Port,通过issueing

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 

最终在i386的模式下进行编译,我不得不重建某些端口:

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没有错误(和摄像头的工作)。

+0

我现在也使用HomeBrew:提供了一种快速的方式来编译opencv和类似的路线。 – meduz 2011-04-02 11:56:29

0

用QTKit和Cocoa编译OpenCV,然后在HandVu中使用它。如果您使用Mac OSX 10.6.4或更高版本,请按照以下步骤操作。 (我假设你有PKG_CONFIG_PATH已安装)

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

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

    • handvu/HandVu.h(与#include "opencv2/opencv.hpp"替换#include "cv.h",并删除 “highgui.h”)
    • handvu/OpticalFlow.h(取代的#include“品种。 H”用#include “opencv2/opencv.hpp” 并删除 “highgui.h”)
    • handvu/GestureServer.cpp(上线255,与SO_NOSIGPIPE替换MSG_NOSIGNAL)
    • hv_OpenCV/hv_OpenCV.cpp(替换#包括 “cv.h” 用#include “opencv2/opencv.hpp”,并删除 “highgui.h” 并替换代码线185与下面的代码:

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