目錄:
A. 步驟
- 1.使用cmake-gui配置opencv
- 2.添加opencv_contrib,生成建構檔
- 3.使用vs2019打開建構項目,編譯、安裝
B. 簡介
1. cmake簡介
cmake是跨平臺的建構工具,能產生標準的建構檔(如Unix的 Makefile 或 Windows projects/workspaces)。其他工具利用標準的建構檔來生成軟件。
2. opencv_contrib簡介
opencv中用於放置已開發的穩定功能模塊,contrib中是正在開發的新特性分支。
contrib中包含 | 釋義 |
---|---|
aruco | 增強現實 |
bioinspired | 生物視覺 |
cnn_3dobj | CNN物體識別和姿態估計 |
face | 人臉識別 |
fuzzy | 視覺的模糊邏輯 |
freetype | 寫字 |
line_descriptor | 線條匹配與提取 |
ovis | 3D可視化 |
text | 文字識別 |
tracking | 目標跟蹤 |
xfeatures2d | 2d特徵算法 |
ximgproc | 擴展的圖像處理 |
xobjdetect | 增強的2d物體檢測 |
… | 等等 |
B. 安裝
注意:筆者使用的win10系統
1. 安裝cmake
- cmake下載鏈接:https://cmake.org/download/
點擊安裝即可
2. 安裝vs2019
可參考之前的博客:
圖文詳解 - windows下安裝vs2017(適用vs2019)
3. 安裝openCv
3.1 opencv安裝包
點擊下載,如圖所示:
可參考之前的博客:
openCv4.1.0+win10(x64)+vs2019環境搭建
4. 下載opencv_contrib
注意: opencv安裝包和contrib壓縮包的版本要一致,否則後面的編譯會出錯
4.1 opencv_contrib壓縮包
點擊下載,如圖所示:
C. 配置和編譯
1.使用cmake-gui配置opencv
1.1 打開安裝好的cmake-gui
1.2 使用gui配置opencv
注意:指定的“編譯目錄”如果沒有的話,點擊configure後,確定即可
選配編譯環境(我們指定爲vs2019)
配置完成:
1.3.添加opencv_contrib,生成建構檔
3.使用vs2019打開建構項目,編譯、安裝
在cmake-gui完成Generate後,"Open Project"就由灰色變爲可選了,右擊就使用之前配置的vs2019來打開編譯(可以根據需要編譯,如編譯Release和Debug版):
4. 新建一個opencv項目,更新vs2019項目的屬性文件,使用新編譯的opecv庫和擴展庫contrib
可參考(需要使用"build/install/目錄下"對應的信息):2. win10(x64)+vs2019+openCv4.1.0環境搭建
特別注意項:
- 1.別忘了爲新opencv編譯"build\install\x64\vc15\bin"增加win10的環境變量
- 2.vs2019的屬性文件的"鏈接器"->“輸入”->“附加依賴項”,需要添加所有的新庫文件名稱
- 其他需要更改項:
- “VC++目錄”->“包含目錄”
- “VC++目錄”->“庫目錄”
測試代碼1(測試opencv):
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
String winname = "Image Window";
//當前目錄中添加一個名稱爲"color_wheel.jpg的圖片文件"
//指定圖片來源和名稱要和實際對應, 注意“/”
Mat image = imread("./color_wheel.jpg");
if (image.data == NULL)
{
cerr << "錯誤: 沒找到文件。" << endl;
}
else
{
//指定圖片顯示器的標題名稱
imshow(winname, image);
}
//等待按鍵操作,避免閃退
waitKey(0);
return 0;
}
測試代碼2(測試contrib)
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2\face.hpp>
using namespace std;
using namespace cv;
using namespace face;
int main()
{
Ptr<FaceRecognizer> model;
waitKey(0);
return 0;
}