2010-04-13 56 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; 
      // }