opencv4.0.0+cmake編譯(含contrib)


https://blog.csdn.net/bobo184/article/details/88749651

 

前言
筆者環境:win10+vs2015+cmake3.8.2

介紹下4.0.0的新特性,沿用官網的說明:

在發布3.0版的近3.5年后,我們很高興推出4.x系列的第一個穩定版本。

版本特性:

OpenCV現在是C ++ 11庫,需要兼容C++ 11標准的編譯器。所需的最低CMake版本已提升至3.5.1。
很多OpenCV 1.x的C API已被刪除
在核心模塊中延續性(在XML,YAML或JSON中存儲和加載結構化數據)已在C ++中完全重新實現,並且也去掉了C API。
添加了新的模塊G-API,它可以作為非常高效的基於圖形的圖像處理流水線的引擎。
dnn模塊使用OpenVINO™工具包R4中的深度學習部署工具包(Deep Learning Deployment Toolkit)進行了更新。請參閱指南如何構建和使用支持DLDT的OpenCV。
dnn模塊現在包括實驗性Vulkan后端,並支持ONNX格式的網絡。
流行的Kinect Fusion算法已實現,並針對CPU和GPU(OpenCL)進行了優化
QR圖碼檢測器和解碼器已添加到objdetect模塊中
非常高效且高質量的DIS密集光流算法已從opencv_contrib轉移到視頻模塊。
更多細節可以在之前的宣布中找到:4.0-alpha,4.0-beta,4.0-rc和更新日志
1、下載
在opencv的官網或者opencv的github上都可以下載,筆者在GitHub上下載。

https://opencv.org/releases/

 

 

 

 

 

下載擴展庫

打開opencv的GitHub,如下:

https://github.com/opencv

 

 

 

  

 下載完解壓得到,下面開始編譯(玩cv自己不會編譯是不行的):

 

 2、cmake編譯
 在opencv目錄下,新建一個文件夾newbuild,接下來編譯的結果將存放在這個目錄下。

(1)cmake配置與生成


 

 

 

 

 

 

 

 

 

 等待一段時間,

 中間部分報錯,比如python版本不對,想先忽略不用它。

 

 

 

 

 

 

 

 

 接下來添加擴展庫contrib的module

 

 -----------------------------------------------------------------------------------------------沒有cuda版本---------------------------------------------------------------------------------------

添加生成dll

 

 

 

 

 

 重新點擊一次,

 

 

 然后點擊generate,開始下載各種需要的依賴,最好開下載代理更快。

 

 

 

 等待一段時間,generate done,所有的紅色就會沒有,否則只能重新生成了。

 --------------------------------------------------------------------------有cuda版本----------------------------------------------------------------------------------------------------

 https://blog.csdn.net/omg_orange/article/details/98068001

次配置后,出現一片紅色,再點一次配置就變白了。變白后改變其中的三個選項:
1.注意勾選WITH_CUDA(帶了cuda后,以后發布程序到其他電腦上都要帶cuda的DLL文件,所以慎重選擇)
2.不勾選BUILD_opencv_world選項
3.在OPENCV_EXTRA_MODULES_PATH選項中,填寫opencv_contrib解壓目錄下,modules文件夾的路徑,這樣就把opencv_contrib編譯進去了。

4 如果你想用 SURF,SIFT算法的話需要把 OPENCV_ENABLE_NONFREE 勾上

開啟cuda

 添加擴展庫

 

 

 

 再次點擊  配置,等待結束

 

 

Generate按鍵,生成vs工程文件了。 生成完畢之后在 “ Configuring done"下面會出現”Generating done"。

結束后,之后直接點擊“Open Project",便會使用VS2019打開工程。

 

 

 

 

 

 

 

 (2)vs編譯生成install
打開build下的的OpenCV.sln文件,

 

 

 

 

 找到CmakeTargets下的install,右擊 點擊 生成,。

 

 

 分別編譯Release版本和Debug版本,最后可以在指定輸出文件夾下的install文件夾下找到編譯輸出內容

 

 

 

 

 

(3)重新配置opencv,環境變量/依賴項等等
這里就駕輕就熟了,和以前的版本一樣,

添加環境變量到path

 

 

 

 

 

 然后打開vs2015,打開屬性管理器,

 

 

 

 

 點擊Debug x64下的第一個,打開屬性

 

 

 

 包含目錄為:

install\include

install\include\opencv2

install是剛才上面生成的

 

 

 

 

 然后是鏈接器下 輸入 

lib文件帶d的是debug模式下的,沒有就是release模式,

筆者這里是debug模式下的,release沒有編譯,如過需要,和前面的步驟差不多。

回到前面這張圖,重新生成。

 

 debug版本 400

opencv_aruco400d.lib
opencv_bgsegm400d.lib
opencv_bioinspired400d.lib
opencv_calib3d400d.lib
opencv_ccalib400d.lib
opencv_core400d.lib
opencv_datasets400d.lib
opencv_dnn_objdetect400d.lib
opencv_dnn400d.lib
opencv_dpm400d.lib
opencv_face400d.lib
opencv_features2d400d.lib
opencv_flann400d.lib
opencv_fuzzy400d.lib
opencv_hfs400d.lib
opencv_highgui400d.lib
opencv_img_hash400d.lib
opencv_imgcodecs400d.lib
opencv_imgproc400d.lib
opencv_line_descriptor400d.lib
opencv_ml400d.lib
opencv_objdetect400d.lib
opencv_optflow400d.lib
opencv_phase_unwrapping400d.lib
opencv_photo400d.lib
opencv_plot400d.lib
opencv_reg400d.lib
opencv_rgbd400d.lib
opencv_saliency400d.lib
opencv_shape400d.lib
opencv_stereo400d.lib
opencv_stitching400d.lib
opencv_structured_light400d.lib
opencv_superres400d.lib
opencv_surface_matching400d.lib
opencv_text400d.lib
opencv_tracking400d.lib
opencv_video400d.lib
opencv_videoio400d.lib
opencv_videostab400d.lib
opencv_xfeatures2d400d.lib
opencv_ximgproc400d.lib
opencv_xobjdetect400d.lib
opencv_xphoto400d.lib

  

relase版本  400

opencv_aruco400.lib
opencv_bgsegm400.lib
opencv_bioinspired400.lib
opencv_calib3d400.lib
opencv_ccalib400.lib
opencv_core400.lib
opencv_datasets400.lib
opencv_dnn_objdetect400.lib
opencv_dnn400.lib
opencv_dpm400.lib
opencv_face400.lib
opencv_features2d400.lib
opencv_flann400.lib
opencv_fuzzy400.lib
opencv_hfs400.lib
opencv_highgui400.lib
opencv_img_hash400.lib
opencv_imgcodecs400.lib
opencv_imgproc400.lib
opencv_line_descriptor400.lib
opencv_ml400.lib
opencv_objdetect400.lib
opencv_optflow400.lib
opencv_phase_unwrapping400.lib
opencv_photo400.lib
opencv_plot400.lib
opencv_reg400.lib
opencv_rgbd400.lib
opencv_saliency400.lib
opencv_shape400.lib
opencv_stereo400.lib
opencv_stitching400.lib
opencv_structured_light400.lib
opencv_superres400.lib
opencv_surface_matching400.lib
opencv_text400.lib
opencv_tracking400.lib
opencv_video400.lib
opencv_videoio400.lib
opencv_videostab400.lib
opencv_xfeatures2d400.lib
opencv_ximgproc400.lib
opencv_xobjdetect400.lib
opencv_xphoto400.lib

  

 

 然后確定就行了。

(4)測試

新建工程-添加源文件-簡單代碼(sift特征檢測)

代碼如下:

#include <iostream>
#include <vector>
#include <opencv2/xfeatures2d.hpp>
#include <opencv2/xfeatures2d/nonfree.hpp>
#include <opencv2/highgui.hpp>
 
using namespace cv;
using namespace std;
 
int main()
 
{
	Mat src = imread("F:/vs_test/lena.jpg");
 
	if (src.data == NULL)
	{
		cout << "No exist" << endl;
		return -1;
	}
	namedWindow("input image", WINDOW_AUTOSIZE);
	namedWindow("output image", WINDOW_AUTOSIZE);
	imshow("input image", src);
	Ptr<Feature2D> sift = xfeatures2d::SIFT::create(400); //括號參數越大越精確,自定
	vector <KeyPoint> keypointsa;
	Mat a;
 
	sift->detectAndCompute(src, noArray(), keypointsa, a); //得到特征點和特征點描述
	drawKeypoints(src, keypointsa, src);//畫出特征點
 
	//顯示
	imshow("output image", src);
 
	waitKey();
	return 0;
}

  

 

 


免責聲明!

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



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