2011-05-20 88 views
1

OpenCV的程序時,當我嘗試編譯它使用了OpenCV庫中的代碼塊C++程序它給了我一個運行時錯誤運行時錯誤我已經使用Code Blocks IDE的鏈接器設置(包括名爲libopencv_calib3d.so.2.2這是一個符號鏈接)添加了所有必需的庫。編碼使用代碼塊在linux

但是我能夠通過發出命令編譯使用命令行程序:

g++ hello-world.cpp -o hello-world \ 
     -I /usr/local/include/opencv -L /usr/local/lib 
     \ -lm -lcv -lhighgui -lcvaux 

誰能告訴我我如何能得到運行使用相同的代碼塊。

謝謝!

回答

2

文件libopencv_calib3d.so.2.2是OpenCV 2.2的一部分。然而,OpenCV 2.2沒有libcv,libhighgui或libcvaux部分。這意味着你的g ++調用鏈接針對另一個版本的OpenCV。

要連接到OpenCV 2.2,您需要使用像-lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann這樣的標誌。

你也應該不把它們放在手動,而是使用

export PKG_CONFIG_PATH=/usr/local/share/opencv/:$PKG_CONFIG_PATH 
g++ `pkg-config --cflags --libs opencv` hello-world.cpp -o hello-world 
+0

謝謝!但我認爲我使用g ++時手動爲我工作。不過,我正在嘗試使用代碼塊IDE編譯我的代碼。那麼有沒有什麼辦法可以在CodeBlocks中將libcv,libhighgui,libcvaux等與OpenCV 2.2永久關聯? – 2011-05-20 12:28:19

+0

不,因爲這些庫是*不*是OpenCV 2.2的一部分,你應該擺脫它們!它們來自舊版本的OpenCV,從長遠來看它們只會給你帶來麻煩。 – ypnos 2011-05-23 11:16:31

0

我會建議安裝Linux版,2.4.9例如合理了最新版本的OpenCV的,在這個時候寫作,看起來是用當前版本的gcc構建的(4.8.2)。要完成一個簡單的OpenCV示例並在Code :: Blocks中運行,需要完成幾個步驟。 OpenCV的文檔告訴你你的OpenCV的根目錄下,運行cmake中創建一個build目錄,製作,須藤使安裝等,以生成您的項目可能需要鏈接到庫,包括你提到的libopencv_calib3d.so:

enter image description here

此博客中給出瞭如何安裝OpenCV和配置它的使用的代碼::塊在Ubuntu Linux環境中的解釋:

http://www.technical-recipes.com/2014/using-opencv-in-codeblocks-in-linux/