Windows下CMake編譯安裝OpenCV

醬_油發表於2021-09-28

Windows下CMake編譯安裝OpenCV

這是一個面向新手的在windows上運進opencv, helloword的教程. 在這裡我們使用vs2019來編譯opencv, 並執行一個helloworld來展示如何用CMake來編譯執行.
 
0. 準備工作
    需要的軟體: VisualStudio 2019 社群版, CMake, 在系統變數下加入VS2019 MSBuild.exe 的路徑.
 
1. 下載:

    在 https://opencv.org/releases/ 下載source檔案

 

2. 編譯:
    開啟CMakeGUI 如圖:在Browser Source處選擇解壓後的原始碼, 在Build處選擇build結果存放的目錄.
 然後勾選需要build的內容, 最後點 Generate. 在這裡我們選擇 Visual Studio 16 2019, 設定 平臺為 x64

 

 

生成過程中可能會遇到網路問題導至的下載錯誤(需要自行解決網路問題), 連結庫錯誤等(可考慮去掉不需要的功能)
如:在這裡我們選擇了opencv_world, 並去掉了對於python3的支援.

 

 

3. 編譯
生成結束後, build資料夾下內容應如下所示:
我們用vs開啟OpenCV.sln, 選擇ALL_BUILD後進行編譯
如果成功會有如下的顯示:

這時build資料夾下應該會有生成出的install資料夾(沒有就選install再進行一次編譯)內容如下. 
能看到這個, 我們的opencv就編譯好了.

 

 

最後需要在系統環境變數的PATH中加入opencv的bin路徑: D:\Developments\opencv_build\install\x64\vc16\bin 
 
4. 編譯執行helloworld
我們同樣使用cmake來編譯執行helloworld
 
demo.cpp
 1 #include "opencv2/opencv.hpp"
 2 #include "opencv2/highgui/highgui.hpp"
 3 
 4 using namespace cv;
 5 
 6 int main(int argc, char** argv) {
 7     //create a gui window:
 8     namedWindow("Output",1);
 9     //initialize a 120X350 matrix of black pixels:
10     Mat output = Mat::zeros( 120, 350, CV_8UC3 );
11     //write text on the matrix:
12     cv::putText(output, "Hello World", cv::Point(10,output.rows-18),
13         cv::FONT_HERSHEY_SIMPLEX, 0.4, cv::Scalar(200,200,250), 1, 8);
14     //display the image:
15     imshow("Output", output);
16     //wait for the user to press any key:
17     waitKey(0);
18     return 0;
19 
20 }
下面是一個基礎的opencv. hello world級cmake檔案. 先設定 OpenCV_DIR 到install資料夾, cmake的 find_package 會自動找到標頭檔案和庫的位置. 在編譯完程式後, 需要link opencv_world這個庫.
 
CMakeLists.txt
 1 project("DEMO")
 2 
 3 cmake_minimum_required(VERSION 3.21)
 4 
 5 set(OpenCV_DIR "D:/Developments/opencv_build/install")  # opencv安裝位置
 6 find_package(OpenCV REQUIRED) # 讓CMake自動找OpenCV的標頭檔案和庫
 7 
 8 include_directories(${OpenCV_INCLUDE_DIRS}) # 要包含的標頭檔案
 9 add_executable(demo demo.cpp)
10 target_link_libraries(demo "D:/Developments/opencv_build/install/x64/vc16/lib/opencv_world453d.lib" ) # 連結OpenCV庫

 

 
新建build資料夾後, cmake ..
再 MSBuild.exe DEMO.sln 進行編譯
最後, 生成好的檔案會在 Debug 下

 

 

 

相關文章