1. 程式人生 > >VS2015 安裝opencv2.4.13(nofree函式庫)

VS2015 安裝opencv2.4.13(nofree函式庫)

學習opencv影象處理也有一段時間了,一開始使用的是最新的版本opencv3.2.0,但在最近用opencv檢測興趣與匹配時時,發現opencv3.2.0並不支援nonfree庫了(裡面包含影象興趣點檢測的優秀演算法:SURF,SIFT),仔細看看了原理,挺複雜的,自己寫感覺不太現實,於是下載了個包含本模組的老版本的opencv2.4.13。vs配置opencv的教程網上也很多了,也為我開始學習時提供了很多幫助,本文主要解決以下問題:
1.修改VS2015安裝路徑的方法;
2.opencv檔案中如何選擇x86還是x64的問題(跟你的電腦是32位或64位的沒有直接關係);
3.最新的opencv3.1.0/3.2.0版本沒有nonfree所包含的函式庫;
4.vs2015配置opencv的詳細流程;
5.opencv各函式庫的簡單介紹;
6.vs2015編寫簡單的opencv應用例項。

VS2015官網下載連結:https://www.visualstudio.com/downloads/
注:電腦以前安裝過VS2015解除安裝後,再次安裝時發現安裝路徑無法選擇。原因是:VS2015以前安裝的元件並沒有解除安裝乾淨,安裝時系統自動連線到以前的安裝路徑。解決辦法:徹底刪除遺留檔案(終極解除安裝軟體:Visual Studio Uninstaller)。

VS2015安裝opencv
1.下載opencv安裝包:根據執行的系統選擇(本系統為win10)
2.單擊安裝包 右鍵,以管理員身份執行,選擇安裝路徑(建議現在碟符中新建一個資料夾,並以opencv版本號命名,如:opencv2.4.13),windows下其實就是一個解壓的過程。
3.使用者|系統變數設定。回到電腦桌面,滑鼠右擊“我的電腦”圖示,選擇屬性-高階系統設定-環境變數,將出現以下介面:
這裡寫圖片描述


3.1使用者變數設定(通常情況不設定使用者變數有時也能使用opencv,為保險起見,最好設定為好,特別是在使用較低版本的opencv時),具體步驟如圖所示:
這裡寫圖片描述
假如opencv安裝到了C盤opencv2.4.13,則新增路徑為:C:\opencv2.4.13\opencv\C:\opencv2.4.13\opencv\build\x86\vc14\bin
(有沒有注意到此處選擇的是…x86\vc14…,不可以用x64嗎?,低版本中只有vc12,vc11…,沒有vc14呀? 後面將做講解…)
3.2系統變數設定:系統變數設定與使用者變數設定顯示,如圖所示
這裡寫圖片描述

4.VS2015編譯連線屬性設定
4.1啟用VS2015,新建一個工程
4.2單擊選單欄“檢視—其他視窗—屬性管理器”,在彈出來的屬性管理器中進行Debug屬性設定。
這裡寫圖片描述


(問題來了:這裡有和Debug|x64),設定哪個呢?——根據我們第三步設定環境變數路徑來確定:“…x86..”對應“Debug|win32”;“…x64…”對應“Debug|x64”。由於我新增的是“…x86…”這裡我選擇“Debug|win32”下的“Microsoft.Cpp.Win32.user”右擊點選屬性,進入圖示介面:
這裡寫圖片描述
4.1.1選擇“VC++目錄”在包含目錄 中新增檔案路徑,如:
C:\opencv2.4.13\opencv\build\include
C:\opencv2.4.13\opencv\build\include\opencv
C:\opencv2.4.13\opencv\build\include\opencv2
在“庫目錄”下新增庫檔案路徑,如:
C:\opencv2.4.13\opencv\build\x86\vc14\lib

4.1.2選擇”聯結器—輸入”在“附加依賴項”中新增.lib檔案,操作如圖所示:
這裡寫圖片描述
.lib檔案以及相關函式功能簡介如下:
opencv_ml2413d.lib
opencv_calib3d2413d.lib/包含相機標定、雙視角幾何估計以及立體函式/
opencv_contrib2413d.lib
opencv_core2413d.lib/包含程式庫的核心功能,特別是基本的資料結構和演算法函式/
opencv_features2d2413d.lib/包含特徵點檢測器、描述子以及特徵點匹配框架/
opencv_flann2413d.lib
opencv_gpu2413d.lib
opencv_highgui2413d.lib/包含影象、視訊讀寫函式和部分使用者介面函式/
opencv_imgproc2413d.lib/包含了主要的影象處理函式/
opencv_legacy2413d.lib
opencv_objdetect2413d.lib/包含目標檢測函式,例如面部和人體探測器/
opencv_ts2413d.lib
opencv_video2413d.lib/包含運動估計、特徵跟蹤以及前景提取函式和類/
opencv_nonfree2413d.lib/付費模組(專利保護),SURF、SIFT演算法/
opencv_ocl2413d.lib
opencv_photo2413d.lib
opencv_stitching2413d.lib
opencv_superres2413d.lib
opencv_videostab2413d.lib

注:其他版本的opencv安裝步驟與此類似,其中
vc14——VS2015
vc12——VS2013(當然這不是絕對的,可以通過其他方式配置與安裝,只是比較麻煩)
這樣你就可以通過opencv進行你的影象處理學習的旅程了。

測試例項:
1.圖片讀取(圖片在工程根目錄下不需要新增路徑,否則需要)如;
cv::Mat image = cv::imread(“image.jpg”,1);/讀取彩色圖片/
cv::Mat image = cv::imread(“image.jpg”,0);/讀取圖片轉化為灰度圖片/
2.顯示圖片:
cv::imshow(“OriginImage.jpg”,image);
3.灰度處理:常用與影象處理的預處理,以減少計算量。
cv::cvtColor(image, picture, CV_BGR2GRAY);
4.二值化處理:
cv::threshold(picture, binary, 120, 255, cv::THRESH_BINARY);

測試結果:
OriginImage

GreyImage

BinaryImage

例項程式碼:

#include <iostream>
#include <opencv2\core\core.hpp>
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\imgproc\imgproc.hpp>

int main()
{
    cv::Mat picture;
    cv::Mat image = cv::imread("image.jpg");
    if (image.empty())
    {
        std::cout << "read image failure!\n";
        return 0;
    }
    std::cout << "read image succeed!\n";
    cv::namedWindow("OriginImage");
    cv::imshow("OriginImage", image);

    cv::cvtColor(image, picture, CV_BGR2GRAY);//灰度圖片
    cv::namedWindow("GreyImage");
    cv::imshow("GreyImage", picture);
    cv::imwrite("GreyImage.jpg", picture);

    cv::Mat binary;
    cv::threshold(picture, binary, 120, 255, cv::THRESH_BINARY);

    cv::namedWindow("BinaryImage");
    cv::imshow("BinaryImage", binary);
    cv::imwrite("BinaryImage.jpg", binary);

    cv::waitKey(0);
}