之前嘗試用vs寫opencv的項目,但是因為各種使用習慣很難改過來,加上vs的快捷鍵和代碼智能提示相當的蛋疼,所以嘗試着在clion上配置opencv開發環境。
以下是詳細配置過程:
預先需要安裝的軟件:
clion
:這個是jetbrain家出品的C++集成開發環境,如果你用習慣了idea,pycharm,那么上手這個軟件,應該也是比較簡單的。相比較巨硬家的visual studio而言,個人覺得vs的快捷鍵着實蛋疼,而且用的確實少,一些窗口設置不太習慣。這個軟件安裝比較簡單,不詳細展開
mingw
: opencv需要用到c++編譯環境,mingw是比較常用的一個。不過,需要安裝支持多線程的版本,即posix
版本,如果不用這個版本,在編譯的時候會出問題。[下載地址](https://jaist.dl.sourceforge.net/project/mingw-w64/Toolchains targetting Win64/Personal Builds/mingw-builds/8.1.0/threads-posix/seh/x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z) ,下載好之后,還需要配置環境變量,如下圖所示:
通過在命令行中運行如下命令,查看是否成功安裝
gcc --version
cmake:這個軟件的安裝也比較簡單,也可以不用配置環境變量,因為后期生成Makefile文件也是在gui界面里面生成的。Cmake下載地址 舊版的Cmake可以自定義設置entry開啟或者關閉,我下載的是最新的,問題不大。
編譯安裝opencv
-
下載opencv並解壓到一個路徑下
-
使用cmake-gui生成makefile文件
下載好后的opencv存放路徑和文件目錄結構如下
打開cmake的圖形化工具,選擇好相應的路徑
然后選擇tools菜單,點擊configure,這個過程需要持續一定的時間,並且很可能會失敗,遇到各種錯誤,遇到錯誤之后,不用擔心,一個一個錯誤解決即可,大部分的錯誤基本上都是文件下載失敗錯誤。這個過程會在GitHub上下載三個文本文件,如果沒有配置FQ的話,很有可能會下載失敗,我們可以手動下載好這三個文件並存放到相應的目錄,即可成功解決。之后繼續點擊configure。
這三個下載失敗的文件,就是上圖中藍色字體,復制對應的下載路徑,手動下載好之后,修改文件名,然后存放到對應的目錄中。
舉個例子:
第一個文件,下載路徑是:https://raw.githubusercontent.com/opencv/opencv_3rdparty/629590c3ba09fb0c8eaa9ab858ff13d3a84ca1aa/ffmpeg/opencv_videoio_ffmpeg.dll
存放的路徑是:
D:/software/opencv_clion/opencv/sources/.cache/ffmpeg/638065d5a0dab8a828879942375dcac4-opencv_videoio_ffmpeg.dll
文件內容須和指定文件下載鏈接中的文件內容一致,第三個文件用瀏覽器打開是直接顯示文件內容,如果你選擇復制手動創建這個文件,md5校驗可能會失敗(空格或者其它的字符不匹配等等),文件名,文件存放路徑,必須和日志文件完全一樣。
排查好這三個錯誤,后面繼續configure就沒有問題了。
這三個文件,我也提供下載鏈接:
configure結束之后,開始generate,也是點擊cmake的tools菜單項,選擇generate,生成makefile文件
然后git bash進入到mingw_build目錄下,之后運行以下命令
mingw32-make -j4
利用mingw
進行編譯。-j4
代表使用四個線程加速編譯。可根據自己電腦配置合理選擇。 編譯時間較長,大約十幾分鍾左右。此時如果報錯可能是MinGW
版本選擇問題。
結束之后,運行以下命令
mingw32-make install
配置環境變量,將{opencv_homedir}/opencv/MinGW-build/install/x64/mingw/bin
加入環境變量中的path
中。
clion新建項目
CMakeLists.txt文件內容如下:
cmake_minimum_required(VERSION 3.20)
project(learnopencv)
set(CMAKE_CXX_STANDARD 14)
set(OpenCV_DIR D:\\software\\opencv\\mingw_build\\install)
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(learnopencv main.cpp)
target_link_libraries(learnopencv ${OpenCV_LIBS})
main.cpp文件內容如下:
#include "iostream"
#include<opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main() {
Mat img = imread("D:\\projects_cpp\\unarchived\\learnopencv\\images\\lena.jpg");
if (img.empty()) {
cout << "Error" << endl;
return -1;
}
imshow("Lena", img);
waitKey();
return 0;
}
運行結果如下:
ok,大功告成
大家如果配置環境過程中遇到了其他的問題,歡迎評論區留言,我基本上配了三天才完全配好這個環境,可以說踩了很多坑了。我看到了,都會及時回復的。