? ? clion是一個jetbrains提供的c++開發(fā)環(huán)境,和idea,pycharm等開發(fā)工具類似,界面有很多相似的地方。
? ? clion內置了一個mingw的編譯環(huán)境,自帶了gcc,g++等命令,安裝完clion之后,我們新建項目,它會使用內置的mingw環(huán)境。
? ??
? ? 這樣,我們就不用額外安裝mingw環(huán)境了。
? ? 后面為了使用opencv, 我們需要通過源碼編譯符合自己本機的opencv庫。
? ? 需要安裝cmake,這個帶gui。我本機的版本是:3.14。
? ? 另一個就是需要下載windows下的opencv-4.5.5-vc14_vc15.exe,這個可執(zhí)行程序解壓之后,有源碼和自帶的opencv依賴庫,依賴庫,通過visual studio來搭建opencv的環(huán)境沒有任何問題,但是通過clion來搭建,就各種報錯。所以還是需要通過它的源碼來編譯安裝一次。
? ? 本機可能還需要python環(huán)境,我這里安裝的python3.10是可以的,沒有必要使用python2版本。
? ? 前面的準備工作做好了,就可以進行編譯了。
? ? 我們運行opencv-4.5.5-vc14_vc15.exe ,它可以加壓出源碼sources和build版本的opencv。
? ??
? ? ?我們需要使用sources源碼。mingw_build目錄是我們新建的,用來存放opencv編譯后的結果。打開cmake-gui,選擇源碼,構建目錄,點擊Configure按鈕,設置生成器類型MinGW Makefiles,點擊Finish開始配置:
? ? 配置過程中,可能會因為下載opencv_video_io_ffmpeg.dll和opencv_video_io_ffmpeg_64.dll失敗而報錯,我們根mingw_build/CMakeDownloadLog.txt?中提示的githubusercontent地址手動下載這兩個文件到sources/3rdparty/ffmpeg目錄下:
? ? configure沒有報錯,提示done之后,就可以generate。
? ? 前面安裝了clion,自帶了mingw編譯環(huán)境,這里為了后續(xù)執(zhí)行命令方便,可以把mingw可執(zhí)行程序目錄加入環(huán)境變量Path中:
D:\Program Files\JetBrains\CLion 2023.1.2\bin\mingw\bin
? ? 最后還需要在命令行下執(zhí)行編譯命令。命令行下進入mingw_build目錄,然后執(zhí)行mingw32-make -j4編譯,后面執(zhí)行mingw32-make install安裝。
? ? mingw32-make install之后,mingw_build目錄下會生成一個install目錄,這里就是編譯好的opencv庫。
?
? ? 為了避免opencv程序運行是缺少動態(tài)鏈接庫,我們把install\x64\mingw\bin目錄也加入環(huán)境變量的Path中。
E:\opencv\mingw_build\install\x64\mingw\bin
? ? 在clion中新建項目,指定存儲目錄,會生成一個CMakeList.txt,我們根據(jù)自己編譯的opencv環(huán)境來進行如下設置:
cmake_minimum_required(VERSION 3.25)
project(opencvtutorial)
set(CMAKE_CXX_STANDARD 17)
set(OpenCV_DIR E:/opencv/mingw_build/install)
find_package(OpenCV 4 REQUIRED)
include_directories(E:/opencv/mingw_build/install/include)
add_executable(opencvtutorial main.cpp)
target_link_libraries(opencvtutorial ${OpenCV_LIBS})
? ? ?這里OpenCV_LIBS設置的環(huán)境變量為:
E:\opencv\mingw_build\install\x64\mingw\lib
? ? 就是編譯安裝之后的install\x64\mingw\lib目錄。?
? ? CMakeList.txt主要添加包含目錄,就是程序中引入的opencv相關頭文件,不會報找不到問題,設置庫目錄,就是把opencv相關的lib依賴加入項目中,避免編譯報錯。?
? ? 編寫代碼:
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/dnn/dnn.hpp>
using namespace std;
using namespace cv;
dnn::Net net;
int main() {
cout << CV_VERSION << endl;
string onnxfile = "E:\\workspace\\python\\aitutorial\\test.onnx";
net = dnn::readNetFromONNX(onnxfile);
if (!net.empty()) {
float value = 1024;
Mat inputBlob = Mat(1, 1, CV_32F, Scalar(value));
net.setInput(inputBlob, "input");
Mat output = net.forward("output");
cout << "input value : " << value << endl;
cout << "output : " << output.at<float>(0, 0) << endl;
}
waitKey(0);
return 0;
}
? ? ?運行打印結果如下:
?文章來源:http://www.zghlxwxcb.cn/news/detail-650222.html
? ?我通過直接下載的opencv-4.5.5-vc14_vc15.exe運行生成的opencv/build結果,可以通過visual studio配置并成功運行opencv示例,但是在clion這里怎么都不行,所以就通過mingw環(huán)境編譯了一次opencv,很幸運,最后成功了,看來不同的工具對應的環(huán)境還是差別很大的。文章來源地址http://www.zghlxwxcb.cn/news/detail-650222.html
到了這里,關于clion + opencv環(huán)境搭建的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!