1. 程式人生 > >ubuntu上面編譯並使用OpenCV

ubuntu上面編譯並使用OpenCV

        最近學習QT及OpenCV的使用,所以嘗試下載了OpenCV,並且按照網上教程編譯。首先我下載的是OpenCV2.2編譯的時候出現了好多問題。先說一下我的編譯方法參考http://blog.csdn.net/moc062066/article/details/6617968。不過這裡我在cmake-gui中取消with_tiff與with_FFMPEG 。 

       編譯是好多錯誤,Opencv2.2與OpenCV出現錯誤差不多:

        1、error: ‘ptrdiff_t’ does not name a type   

             解決:加入include目錄下的cxcore.hpp   上面加上名稱空間 using std::ptrdiff_t

;

             解決:http://blog.chinaunix.net/uid-23381466-id-3828667.html

       3、錯誤/opt/OpenCV-2.1.0/tests/ml/src/slmltests.cpp:104:20: error: ‘unlink’ was not declared in this scope

            解決:在每個錯誤檔案上加上標頭檔案:#include <unistd.h>

        後來轉戰到OpenCV2.4.2,這個版本的編譯就簡單多了,按照之前的辦法,我在cmake-gui中取消with_tiff與with_FFMPEG。

       在Qt中使用OpenCV是需要新增標頭檔案及庫路徑,比如我是放在/usr/local/include /usr/local/lib這兩個路徑下,則在工程的pro檔案中新增如下內容:

INCLUDEPATH +=  /usr/local/include/opencv \
                /usr/local/include/opencv2

LIBS += /usr/local/lib/lib*

注意,庫沒有新增成功的話會出現很多如下錯誤:

cameradialog.cpp:(.text+0x15):對‘vtable for CameraDialog’未定義的引用

cameradialog.cpp:(.text+0x28):對‘cvReleaseCapture’未定義的引用

cameradialog.o:在函式‘CameraDialog::CameraDialog(QWidget*)’中:

cameradialog.cpp:(.text+0xcb):對‘vtable for CameraDialog’未定義的引用

cameradialog.cpp:(.text+0xd2):對‘vtable for CameraDialog’未定義的引用

cameradialog.cpp:(.text+0x2e5):對‘cvCreateCameraCapture’未定義的引用