開始接觸圖像處理有一段時間了,經過前期的調研,和相關入門知識的學習,開始接觸一些圖像處理應用的工具。Opencv是一個圖像處理的開源庫,由於其開放的協議架構,國內外很多科研機構和團隊都在基於opencv做開發。
首先開發opencv要對opencv進行配置,本篇博客就是寫出我的配置過程,和遇到的一些問題,供大家參考應用。
開始吧!
第一步 下載和安裝Opencv
首先要上opencv網站上下載opencv的包,就是一個.exe文件。網址: http://opencv.org/
這個文件大概350M左右。截止自2015年12月,Opencv在2015年6月4日已經發布至3.0版本,在opencv網站上面可以下載到最新的版本。
配置當然還要vs開發環境,本文以opencv2.4.9版本,vs2012(自行下載安裝)為例:
下載完了opencv,便可以進行安裝和配置。運行可執行下載的opencv2.4.9.exe文件如下圖
與其說是安裝,不如說是解壓會更合適一點,選擇要把該開源庫解壓到的路徑,解壓到
D:\Program Files,由於opencv項目文件打包的時候,已經統一放在Opencv的文件目錄下,所以無需新建一個文件夾,命名為Opencv,只要選擇上一級目錄就ok了。不說廢話上圖
然后點擊紅框的Extract,就是一場漫長的等待之旅,(也就幾分鍾吧!哈哈哈!)
解壓完之后是萬里長征第一步呀!好奇心害死貓呀,好奇的同學就想看看,解壓出來的到底是何方神聖!其實在解壓之后Opencv目錄下就包含兩個文件夾,一個build,一個source,build是Opencv使用的相關文件。Source是相關的源碼和一些文件。還不太了解它是啥,沒事放着吧,得先把它配好了才可以收拾它嘛!接下啦開始第二步。
第二步配置環境變量
【計算機】—【系統屬性】—【高級系統配置】—【高級(標簽欄)】—【環境變量】—雙擊環境變量中的PATH—在變量中添加剛剛解壓的Opencv路徑。高能區:添加是加,不是刪除之前的變量值,在之前的環境變量之后添加一個“;”再加入Opencv的值。沒圖你說個bb!上圖:
重要的事情說三遍:雙擊5的PATH,加“;”然后加路徑,注意打開路徑至
D:\ProgramFiles\opencv\build\x64\vc11\bin,然后單擊復制該路徑,不要手輸,手輸容易出錯!出錯!出錯!X64和X86建議都加進去,D:\ProgramFiles\opencv\build\x64\vc11\bin;D:\ProgramFiles\opencv\build\x86\vc11\bin兩個路徑都擠進去。添加環境變量就是添加bin的路徑,X86表示用的是32位的編譯器編譯,X64表示用64位的編譯器編譯(只是看書說的,並未驗證,錯了也沒關系,都配進去都可以用,不沖突,所以你不要打我)。
內心小激動呀,環境變量配完了,又完成一步,什么?這就完了?騷年想多了!接下來還有第三步!來來來先乖乖注銷系統,這樣人家才可以生效嘛,什么不會注銷,那就簡單粗暴點重啟吧!
第三步工程包含的目錄(include)配置
考慮到以后一直都會用Opencv來做相應的開發,這下就弄一個一勞永逸的方法,配一次就不要再配了!
為了有始有終,我應該吧全過程都搞出來,讓大家看看嘛,大神請自覺跳過若干步
1、 打開visualstudio ,新建一個項目,單擊起始頁的【新建項目】,上圖看一下
話說,條條道路通羅馬嘛,來來來第二種方法,【文件】—【新建】—【項目】;話不多說繼續上圖
然后選擇Visual C++ ,新建【win32控制台運用程序】,然后給自己的工程項目命名(阿貓阿狗隨便叫),選擇路徑(要養成良好的管理文件的習慣啊騷年),然后點擊【確定】,如圖,
2、然后出現win32運用程序向導界面,點擊【下一步】,下一個界面,勾選【空項目】點擊【完成】。瞅瞅看哈:
3、 解決方案資源管理器的【源文件】右擊—【添加】—【新建項】,來一發:
4、 選定【C++文件(cpp)】,進行重命名,像main(阿貓阿狗隨便叫,不要中文就好了),然后單擊【添加】,看圖:
這樣就把一個空白的.cpp文件加入工程中了
5、 單擊【視圖】—【屬性管理器】,這樣子調出屬性管理器,相當於通用配置,之后的再用就無需配置了,一勞永逸啊有木有!來張圖:
VS2013屬性管理器在【視圖】-【其他窗口】-【屬性管理器】(2015/12/15)
6、 在出現的“屬性管理器”工作區中,展開【Debug|Win32】文件夾(點擊前面的小三角號),對文件夾下面的【Microsoft.Cpp.Win32.user】右鍵—【屬性】打開屬性界面。對其進行配置。如圖
7、 打開屬性界面之后,就可以對其進行include的配置,【通用屬性】—【VC++目錄】—【包含目錄】中添加以下三個目錄:
D:\ProgramFiles\opencv\build\include
D:\ProgramFiles\opencv\build\include\opencv
D:\ProgramFiles\opencv\build\include\opencv2
建議像選路徑那樣子選,不要手輸入,手輸入容易出錯,(畢竟人不如機器死板呀)這是和之前解壓的路徑有關的,你只要通過路徑尋找到那幾個文件夾,添加就可以了。
接下來配置庫文件目錄:
這一步和上面配置的include差不多,都是在屬性管理器里面,的那個屬性,【Debug|Win32】——【Microsoft.Cpp.Win32.user】右鍵—【屬性】打開屬性界面。對其進行配置。
屬性界面出來之后,【通用屬性】—【VC++目錄】—【庫目錄】添加D:\ProgramFiles\opencv\build\x86\vc11\lib
這里聲明一點:因為我們用的是32位編譯器,所以選擇X86,vc11對應的是VS2012編譯器,vc10對應的是vs2010編譯器,vc12對應的是vs2013
上圖:
馬上就要大功告成了,小伙伴們不要激動,要耐心。先不要急着把屬性界面關掉嘛,那么心急干嘛!留着它!
第四步配置動態鏈接庫
還是剛剛那個屬性界面,就是上面那個界面嘛,看到沒,【鏈接器】有嗎?沒有的話你告訴我,我保證不打死你。打開【鏈接器】—【輸入】—【附加依賴項】在那里面添加動態鏈接庫:下面的文字你可以復制:手寫我怕你出錯
opencv_ml249d.lib
opencv_calib3d249d.lib
opencv_contrib249d.lib
opencv_core249d.lib
opencv_features2d249d.lib
opencv_flann249d.lib
opencv_gpu249d.lib
opencv_highgui249d.lib
opencv_imgproc249d.lib
opencv_legacy249d.lib
opencv_objdetect249d.lib
opencv_ts249d.lib
opencv_video249d.lib
opencv_nonfree249d.lib
opencv_ocl249d.lib
opencv_photo249d.lib
opencv_stitching249d.lib
opencv_superres249d.lib
opencv_videostab249d.lib
opencv_objdetect249.lib
opencv_ts249.lib
opencv_video249.lib
opencv_nonfree249.lib
opencv_ocl249.lib
opencv_photo249.lib
opencv_stitching249.lib
opencv_superres249.lib
opencv_videostab249.lib
opencv_calib3d249.lib
opencv_contrib249.lib
opencv_core249.lib
opencv_features2d249.lib
opencv_flann249.lib
opencv_gpu249.lib
opencv_highgui249.lib
opencv_imgproc249.lib
opencv_legacy249.lib
opencv_ml249.lib
廢話少說上圖:
要是Opencv是別的版本的,只要把249替換為對應版本的就ok如配的是Opencv-2.4.8
對應的是
opencv_ml248d.lib
opencv_calib3d248d.lib
opencv_contrib248d.lib
opencv_core248d.lib
opencv_features2d248d.lib
opencv_flann248d.lib
opencv_gpu248d.lib
opencv_highgui248d.lib
opencv_imgproc248d.lib
opencv_legacy248d.lib
opencv_objdetect248d.lib
opencv_ts248d.lib
opencv_video248d.lib
opencv_nonfree248d.lib
opencv_ocl248d.lib
opencv_photo248d.lib
opencv_stitching248d.lib
opencv_superres248d.lib
opencv_videostab248d.lib
opencv_objdetect248.lib
opencv_ts248.lib
opencv_video248.lib
opencv_nonfree248.lib
opencv_ocl248.lib
opencv_photo248.lib
opencv_stitching248.lib
opencv_superres248.lib
opencv_videostab248.lib
opencv_calib3d248.lib
opencv_contrib248.lib
opencv_core248.lib
opencv_features2d248.lib
opencv_flann248.lib
opencv_gpu248.lib
opencv_highgui248.lib
opencv_imgproc248.lib
opencv_legacy248.lib
opencv_ml248.lib
好了你可以點擊【應用】—【確定】
紅色文字不用自己輸入,你可以某度,某歌,(杜絕廣告),有的是那些庫,當然你可以復制我上面寫的。只要按照我的命名規則替換就ok。
最后一步:測試程序
現在很是激動呀,來來來復制一段代碼,簡單的,不用復雜。
#include<iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
int main()
{
// 讀入一張圖片(測試圖)
Mat img=imread("測試圖.jpg");
// 創建一個名為 "測試圖"窗口
cvNamedWindow("測試圖");
// 在窗口中顯示測試圖
imshow("測試圖",img);
// 等待8000 ms后窗口自動關閉
waitKey(8000);
}
只是為了測試一下配置是否成功,所以先不管代碼的具體含義,復制進去就好了;
記得在你的圖片命名必須和程序中一致,圖片放置的位置路徑要在工程下面,否則會出現異常報錯:
樓主當時把圖片放在E:\VS2012_project\first_try下面時,報錯為
后經深思熟慮,查閱文獻,各位博主的博客,發現正確的路徑應該是
E:\VS2012_project\first_try\first_try
把圖片存放路徑一調,就正常了。出現了我美麗的天壇圖片
還有在其他一些博主的博客中也有一些報錯的解決方案,這里不一一贅述,附上一位牛人的博客鏈接:http://blog.csdn.net/huang9012/article/details/21811129
以上是我的配置學習過程,如有不足之處歡迎批評指正,原創作品,轉載請注明出處!謝謝!后續的學習總結會陸續推出!歡迎廣大愛好者交流!