2013-12-20 128 views
1

我想編譯VLC 2.0的Ubuntu 13.10OpenCV的支持(第2.4.6.1)。彙編產生以下錯誤:錯誤VLC編譯與OpenCV的支持

COMPILE : libopencv_example_plugin_la-opencv_example.lo 
opencv_example.c: In function 'Filter': 
ERROR : opencv_example.c:185: 45: too few arguments to function 'cvHaarDetectObjects' 
              cvSize(20, 20)); 
              ^
In file included from /usr/local/include/opencv/cv.h:71:0, 
       from opencv_example.c:41: 
/usr/local/include/opencv2/objdetect/objdetect.hpp:139:15: note: declared here 
CVAPI(CvSeq*) cvHaarDetectObjects(const CvArr* image, 
      ^
WARNING : opencv_example.c:210: 57: assignment discards 'const' qualifier from pointer target type [enabled by default] 
      p_sys->event_info.p_region[i].p_description = "Face Detected"; 
                 ^
make: *** [all] Error 2 

有沒有人遇到同樣的問題,或者有關於如何解決它的想法?任何幫助將非常感激。看起來opencv支持在過去一直是bug,但問題似乎已經解決了。和用示例代碼測試opencv庫產生令人滿意的結果,所以我猜問題來自VLC ...

+0

只是一個警告,vlc過濾代碼有點基於opencv1.0,c-api,可怕的過時。另外,你真的想讓你的代碼在vlc管道內運行嗎?使用libvlc製作某種'模擬'VideoCapture對象聽起來像是一個更好的主意。 – berak

回答

1

今天面對同樣的問題。 打開opencv_example.c或寫入,找到創建cvHaarDetectObjects的行。它始於

CvSeq *faces = cvHaarDetectObjects(p_img[0], ... 

替換線cvHaarDetectObjects的整個聲明如下:

CvSeq *faces = cvHaarDetectObjects(p_img[0], p_sys->p_cascade, p_sys->p_storage, 
1.15, 5, CV_HAAR_DO_CANNY_PRUNING, cvSize(0, 0), cvSize(20,20)); 

這些變化使我opencv_example.c編譯好(的OpenCV-2.4.9,VLC-2.0.1, Ubuntu-12.04)