OpenCV學習心得(1) -- OpenCV的安裝
来源:互联网 发布:人工智能报告2000字 编辑:程序博客网 时间:2024/05/22 00:15
轉載請注明出處與作者.
最近需要用OpenCV寫一個工具.找來很多的文章來學習.但是發現不是英文的就是說的不清不楚的(至少對我的水平來說太高深了)..自己只好把自己的經驗寫下來以便以後查詢.
我是從網站上直接下載的二進制文件(貌似是win32系統用的..win64系統要用cmake重編譯.有需要的話再到其他的博客查吧..我現在用不到),下面說的文件你要是沒有的話就用cmake build吧..
首先用VS2010創建一個工程,然後在工程目錄下新建一個文件夾,我建的是OpenCV,然後建立3個子目錄,分別是dll,lib,include,
dll 目錄是用來放置 所有OpenCV要用到的dll文件的,發行的時候將這裡的文件同你的執行程式放在一起發行.
lib目錄是用來放置 所有OpenCV要用到lib庫的.
include目錄是放置頭文件的.
下面提到的小寫opencv目錄是指從網上下載的opencv壓縮檔解壓縮后的目錄.
首先將opencv\build\include 中的opencv和opencv2兩個目錄全部拷貝到OpenCV\include中.
再將opencv\build\x86\vc10\lib中的所有文件全部拷貝到OpenCV\lib中.
再將opencv\build\x86\vc10\bin中的所有文件全部拷貝到OpenCV\dll中.
然後需要用Cmake和VS2010將opencv\3rdparty下的文件進行編譯,編譯完成后執行下面的步驟:
將opencv\3rdparty\build\3rdparty\Debug下面的*.lib文件重命名成*d.lib(加一個d字符,表示是debug版本),然後拷貝到OpenCV\lib下.
將opencv\3rdparty\build\3rdparty\Release下面的*.lib文件拷貝到OpenCV\lib下.
將opencv\build\common\tbb\ia32\vc10下的所有.dll文件拷貝到OpenCV\dll下.
將opencv\build\common\tbb\ia32\vc10\irml下的.dll文件拷貝到OpenCV\dll下.
複製一份tbb.dll,然後重命名為tbb_debug.dll,這是因為使用debug模式的時候需要這個dll,但是我們又不對這個dll進行debug,所以直接用relese版本的.
這樣我們需要的文件都在dll,lib,include這3個目錄下了.可以把它們保存好,以後再新建工程的話直接將這3個文件夾拷貝過去就行了.
在工程的屬性對話框中->Configuration properties->VC++ Directories->Include Directories中加入如下3個路徑
$(SolutionDir)OpenCV\include
$(SolutionDir)OpenCV\include\opencv
$(SolutionDir)OpenCV\include\opencv2
在工程的屬性對話框中->Configuration properties->VC++ Directories->Include Directories中加入如下路徑: $(SolutionDir)OpenCV\lib
在工程的屬性對話框中->Configuration properties->Linker->Input->Additional Dependencies中加入如下文件:
Debug模式下加入*d.lib文件
zlibd.lib
libtiffd.lib
libpngd.lib
libjpegd.lib
libjasperd.lib
opencv_video231d.lib
opencv_ts231d.lib
opencv_objdetect231d.lib
opencv_ml231d.lib
opencv_legacy231d.lib
opencv_imgproc231d.lib
opencv_highgui231d.lib
opencv_haartraining_engined.lib
opencv_gpu231d.lib
opencv_flann231d.lib
opencv_features2d231d.lib
opencv_core231d.lib
opencv_contrib231d.lib
opencv_calib3d231d.lib
Release模式下加入*.lib文件.(不是以d結尾的)
zlib.lib
libtiff.lib
libpng.lib
libjpeg.lib
libjasper.lib
opencv_video231.lib
opencv_ts231.lib
opencv_objdetect231.lib
opencv_ml231.lib
opencv_legacy231.lib
opencv_imgproc231.lib
opencv_highgui231.lib
opencv_haartraining_engine.lib
opencv_gpu231.lib
opencv_flann231.lib
opencv_features2d231.lib
opencv_core231.lib
opencv_contrib231.lib
opencv_calib3d231.lib
可以建立一個文本文件將這兩個列表保存下來,以後直接拷貝即可.
將工程分別用Debug模式和Release模式 進行bilde一次,這樣在工程目錄下就會生成Debug和Release目錄.
然後將OpenCV\dll目錄中的文件分別拷貝到這兩個目錄中.(Release目錄中可以將以d結尾的文件刪除..).
這樣就設定完了.發行的時候直接將Release文件夾下的文件打包就可以了...
有幾個問題要注意一下:
1. MFC最好是使用靜態鏈接庫與Use Multi-Byte Character Set ,因為OpenCV提供的函數都是單字節的.如果用Unicode MFC,則在使用OpenCV函數前需要將字符進行轉換成單字節模式.(這個好麻煩).
2. OpenCV中使用的std::vector需要預先申請空間(也就是不要指望OpenCV函數幫你申請空間).否則會內存出錯.
例如
//std::vector<cv::Mat> mv; //這一句會出現內存錯誤.
//std::vector<cv::Mat> mv(3); //這一句正確,預先申請了3個Mat空間.
cv::Split(src,mv);
- OpenCV學習心得(1) -- OpenCV的安裝
- OpenCV學習心得
- OpenCV學習心得(4) -- 色彩空間的轉
- OpenCV學習心得(6) -- 圖像的縮放
- OpenCV學習心得(8) -- 直方圖的顯示
- OpenCV學習心得(2) -- 建立一個類來簡化OpenCV的函數.
- OpenCV學習心得(7) -- 閾值處理
- opencv HoughCircles的使用心得
- OpenCV學習心得(3) -- 在MFC上顯示圖像
- OpenCV學習心得(5) -- 圖像通道分離
- OpenCV學習心得(11) -- Mat類型與Arraya
- OpenCV的+安卓+号牌识别(OpenCV + Android +水平矫正)
- opencv移植dsp心得
- Opencv编程心得
- opencv配置心得
- openCV使用心得
- OpenCV(1)-OpenCV 在ubuntu的安装
- 【OpenCV】OpenCV的基础知识
- 这个女人不简单,解决了大数据重大问题
- 分布式哈希和一致性哈希
- sdibt 2548 将十进制数转换成二进制数
- \r\n写入unicode文本文件的问题
- C# serialport
- OpenCV學習心得(1) -- OpenCV的安裝
- js中escape,encodeURI,encodeURIComponent三个函数的区别
- 在Android 项目时的防止Memory leak 要注意的事项
- windows azure 试用感受5
- 关于C语言中的malloc和free函数的用法
- WAS部署war包报错:发生 IWAE0022E Exception异常
- BellmanFord算法框架
- 定制core dump 文件的文件名
- Oracle数据库的三种标准的备份方法