OpenCV中lib的添加


  環境 Visual Studio 2010 + OpenCV 2.3.1

  環境配置可參考下文http://www.opencv.org.cn/forum/viewtopic.php?f=1&t=14545

  近來研究tracking相關問題,涉及到interest point的提取,應用到了"opencv2\features2d\features2d.hpp",然而,vs的IntelliSense沒有報錯,在編譯的時候出現如下錯誤: 

錯誤    2    error LNK2019: 無法解析的外部符號 "public: __thiscall cv::SurfFeatureDetector::SurfFeatureDetector(double,int,int,bool)" (??0SurfFeatureDetector@cv@@QAE@NHH_N@Z),該符號在函數 _main 中被引用    E:\Coding\VS 2010\GroupBehaviour\Histogram\Histogram\Histogram.obj    Histogram

  這個錯誤的原因,我剛開始猜測是因為VS沒有找到相應的定義,或者是根本就找不到"opencv2\features2d\features2d.hpp"中的SurfFeatureDetector,所以應該是配置問題,所以我搜了一些關於環境配置的內容,但都沒有找到原因,最后在StackOverFlow上面
http://stackoverflow.com/questions/8272707/opencv-2-2-vs2010-get-an-access-violation-reading-in-a-very-simple-code  
看到一個回答

You need ensure that the following "Additional Dependencies" under the the Properties->Linker->Input are referring to the correct OpenCV libraries with debugger support.

i.e.

C:\OpenCV2.2\lib\opencv_calib3d220d.lib
C:\OpenCV2.2\lib\opencv_core220d.lib
C:\OpenCV2.2\lib\opencv_features2d220d.lib
-------------------
C:\OpenCV2.2\lib\opencv_highgui220d.lib
C:\OpenCV2.2\lib\opencv_imgproc220d.lib
instead of

C:\OpenCV2.2\lib\opencv_calib3d220.lib
C:\OpenCV2.2\lib\opencv_core220.lib
C:\OpenCV2.2\lib\opencv_features2d220.lib
C:\OpenCV2.2\lib\opencv_highgui220.lib
C:\OpenCV2.2\lib\opencv_imgproc220.lib

 我想,可能是我的lib沒有添加,於是仔細看了一下之前的配置方法,發現幾乎所有的配置中,添加的lib都是:

F:\Softs\OpenCV2.3\build\x86\vc10\lib\opencv_core230d.lib
F:\Softs\OpenCV2.3\build\x86\vc10\lib\opencv_highgui230d.lib
F:\Softs\OpenCV2.3\build\x86\vc10\lib\opencv_video230d.lib
F:\Softs\OpenCV2.3\build\x86\vc10\lib\opencv_ml230d.lib
F:\Softs\OpenCV2.3\build\x86\vc10\lib\opencv_legacy230d.lib
F:\Softs\OpenCV2.3\build\x86\vc10\lib\opencv_imgproc230d.lib



F:\Softs\OpenCV2.3\build\x86\vc10\lib\opencv_core230.lib
F:\Softs\OpenCV2.3\build\x86\vc10\lib\opencv_highgui230.lib
F:\Softs\OpenCV2.3\build\x86\vc10\lib\opencv_video230.lib
F:\Softs\OpenCV2.3\build\x86\vc10\lib\opencv_ml230.lib
F:\Softs\OpenCV2.3\build\x86\vc10\lib\opencv_legacy230.lib
F:\Softs\OpenCV2.3\build\x86\vc10\lib\opencv_imgproc230.lib

  以上的只是常用lib,並不全,於是我找到自己電腦上的"...\opencv\vs2010\install\lib",發現這上面居然有26個,其中13個for debug,13個for release,而我們在上面只添加了6個for debug,6個for release,看來lib是針對性的添加,從而可以引用到相應的函數,按如上方法添加其它的lib即可。

  所有的lib如下所示:

For Release

opencv_calib3d231.lib
opencv_contrib231.lib
opencv_core231.lib
opencv_features2d231.lib
opencv_flann231.lib
opencv_gpu231.lib
opencv_highgui231.lib
opencv_imgproc231.lib
opencv_legacy231.lib
opencv_ml231.lib
opencv_objdetect231.lib
opencv_ts231.lib
opencv_video231.lib

For Debug

opencv_calib3d231d.lib
opencv_contrib231d.lib
opencv_core231d.lib
opencv_features2d231d.lib
opencv_flann231d.lib
opencv_gpu231d.lib
opencv_highgui231d.lib
opencv_imgproc231d.lib
opencv_legacy231d.lib
opencv_ml231d.lib
opencv_objdetect231d.lib
opencv_ts231d.lib
opencv_video231d.lib





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM