2016-01-13 366 views
0

我想運行一個簡單的代碼使用openCV,但我不斷收到此錯誤。爲什麼使用OpenCV時會出現此錯誤?錯誤:未定義的引用`cvCreateFileCapture'

error: undefined reference to `cvCreateFileCapture'

error: undefined reference to `cvQueryFrame'

error: undefined reference to `cvReleaseCapture'

據我知道這些功能是在「highgui」分量我包括它的報頭到我的代碼和也包括它的路徑向我的庫的路徑定義。

INCLUDEPATH += /usr/local/include/opencv 
LIBS += -L/usr/local/lib -lopencv_core -lopencv_imgcodecs -lopencv_highgui 

我成功地使用的「highgui」組件等功能而沒有任何錯誤。例如:'cvLoadImage' 另外我的IDE的intellisense不斷向我推薦這些功能,我認爲這意味着我已經正確包含了庫路徑。

爲什麼我會收到這些錯誤?

對我使用的OpenCV 3.0.0的詳細信息,對Linux Mint的Qt Creator的3.1.1 17.2

完整簡單的代碼,我試圖運行是:

#include <iostream> 
#include <highgui.h> 
#include <cv.h> 

using namespace std; 

int main() 
{ 
    CvCapture* capture = cvCreateFileCapture("/home/ali/drop.avi"); 
    cvNamedWindow("t2",CV_WINDOW_AUTOSIZE); 
    IplImage* frame; 
    while(1) 
    { 
     frame = cvQueryFrame(capture); 
     if(!frame) break; 
     cvShowImage("t2",frame); 
     char c = cvWaitKey(33); 
     if(c==27) break; 
    } 
    cvReleaseCapture(&capture); 
    cvDestroyWindow("t2"); 

    return 0; 
} 

謝謝提前。

+0

上面的代碼是來自opencv的棄用c-api,你**不能**使用它。改爲使用cv :: Mat,cv :: VideoCapture,C++ api。 – berak

回答

0

您對openCV的學習來源已過時。那是舊的C api。研究一些文件here

編輯:另外,照做從@berak使用CV ::墊和CV :: VideoCapture

<opencv2/core.hpp>

而且隨着我的OpenCV的安裝更換<cv.h>,我包括這樣的highgui <opencv2/highgui.hpp>

+0

我認爲這篇文章處理鏈接器錯誤,如何替換標題將有所幫助? – demonplus

+0

鏈接器錯誤到過時的API函數...它們可能已被更改或完全刪除。切換到C++ API –

相關問題