VScode配置Opencv
- 一、 軟件版本
- 二 、下載軟件
- 2.1 MinGw下載
- 2.2 Cmake下載
- 2.3 Opencv下載
- 三、編譯
- 3.1 cmake-gui
- 3.2 make
- 3.3 install
- 四、 VScode配置
- 4.1 launch.json
- 4.2 c_cpp_properties.json
- 4.3 tasks.json
- 五、測試
一、 軟件版本
cmake :cmake-3.27.2-windows-x86_64
MinGw:版本:8.1.0-release-posix-seh-rt_v6-rev0
Opencv:版本:4.5.5
二 、下載軟件
2.1 MinGw下載
MinGw下載地址
選擇 mingw-w64
往下拉選擇下載這個
下載該文件,下載后解壓,然后記住位置。為了方便,我把它改名為MinGw。(這里是MinGw軟件)
添加環境變量,可以直接 win+Q 搜索 “環境變量”
然后在環境變量中,找到 path ,這里就是添加環境變量的地方。
添加環境變量。我這里MinGw的位置是:F:/MinGw
所以我們添加的環境變量是:F:/MinGw/bin
然后 ctrl+R ,輸入cmd,調出 cmd命令窗口。
輸入: gcc -v
顯示這樣,就說明MinGw安裝配置完成。
2.2 Cmake下載
cmake下載地址
cmake-3.27.2-windows-x86_64.zip 這個版本
下載完后,和剛才的過程一樣,解壓生成一個文件夾。放在安裝文件的目錄下
然后進入bin目錄下 雙擊cmake_gui.exe
我這里的路徑是:
C:\Install\cmake-3.27.2-windows-x86_64\bin
我們繼續添加環境變量:C:\Install\cmake-3.27.2-windows-x86_64\bin
然后,然后 ctrl+R ,輸入cmd,調出 cmd命令窗口。
輸入: cmake -version
2.3 Opencv下載
OpenCV下載地址
下載 4.5.5 windows版,然后直接解壓 exe文件到指定路徑即可。最好是建立在一個 OpenCV文件夾下。
三、編譯
這里我要解釋一下,Opencv本來是可以直接應用在vs里的,但是vs太重,不方便,相比之下,使用vscode更加輕量和方便,而且有很多的插件可以讓我們定制化。因此我們選用vscode配置opencv。
但是vscode沒辦法直接使用opencv,我們需要把opencv的源文件進行編譯,然后才能使用。這也是我們要用到cmake的原因。下面我們要使用cmake編譯opencv的源文件。
3.1 cmake-gui
Where is the source code: 這里使用opencv目錄下的source目錄
Where to build the binaries: 這里是編譯后的文件的放置目錄
一般教程都放到opencv/build/x64/mingw
(注:這里的mingw是由我們自己創建的空文件夾)。
這里選擇你自己的gcc.exe 和 g++.exe
這里意思是選擇c 和 cpp 文件的編譯工具,c我們用gcc.exe.cpp我們用g++.exe。
路徑就是MinGw/bin/ 下的
繼續 finish,會開始下載我們需要的東西。一些文件什么的。
執行過程中消息框會出現一堆紅色信息,最后顯示Configure done,是正常的。如果執行時中斷,則存在其他問題。
(這里是借鑒了一位前輩的經驗。)
如果沒有 ”科學上網“ 的話,會有一些配置下載不了,我們需要手動下載。
在執行完后,把關于python的都給取消勾選。勾選BUILD_opencv_world,WITH_OPENGL和BUILD_EXAMPLES,不勾選WITH_IPP、WITH_MSMF和ENABLE_PRECOMPILED_HEADERS(如果有的話),CPU_DISPATCH選空。
3.2 make
到這里,該配置的也都完成了,需要去用編譯生成。
ctrl+R,輸入cmd進入命令行模式:
進入剛剛創建生成的mingw文件夾
cd C:\Install\OpenCV\opencv455\opencv\build\x64\mingw
執行命令: minGW32-make -j 4
在這里代開powershell
(-j 4 是為了執行的更快,如果你電腦配置可以,你甚至可以 -j 8)
然后靜靜等待……
中途可能會因為某些不知名原因出錯,
這里插入一個錯誤解決方案
如下是錯誤信息:
fatal error: opencv2/gapi.hpp: No such file or directory #include <opencv2/gapi.hpp>
問題:
在對OpenCV4.6.0在安裝過程中進行make編譯時,遇到了 “opencv2/gapi.hpp: No such file or directory” 問題,引起這個問題的原因是因為在 /opencv4.6.0/samples/cpp/CMakelists.txt 文件中沒有添加 opencv_gapi 指令,就導致了在編譯過程中編譯器找不到這個文件便會報錯。如下圖所示為具體報錯提示:
解決策略:
進入到 C:\Install\OpenCV\opencv455\opencv\sources\samples\cpp/CMakelists.txt 文件目錄下,打開 CMakelists.txt 文件,在其中添加 opencv_gapi 指令,具體添加如下圖所示:
3.3 install
沒有出錯的話,我們就繼續在該目錄輸入命令:
minGW32-make install
這樣會生成一個install目錄。至此,皇天不負有心人,我們終于編譯完成!
然后我們繼續添加兩個環境變量:
第一個path是:C:\Install\OpenCV\opencv455\opencv\build\x64\vc15\bin
第二個path是:C:\Install\OpenCV\opencv455\opencv\build\x64\mingw\bin
安裝完成的界面
四、 VScode配置
主要配置3個json
4.1 launch.json
(自行配置的屬性: miDebuggerPath)
{"version": "0.2.0","configurations": [{"name": "opencv debuge","type": "cppdbg","request": "launch","program": "${workspaceFolder}\\Debugger\\${fileBasenameNoExtension}.exe",//上面這個Debugger是我自己定義的,為了方便放置生成的exe文件"args": [],"stopAtEntry": false, //這里如果為 false,則說明調試直接運行。(反之則停止)"cwd": "${workspaceFolder}","environment": [],"externalConsole": true,//是否調用外部cmd"MIMode": "gdb","miDebuggerPath": "F:\\MinGw\\bin\\gdb.exe",//自己進行設置"setupCommands": [{"description": "為 gdb 啟用整齊打印","text": "-enable-pretty-printing","ignoreFailures": false}],"preLaunchTask": "opencv3.5.2"}]
}
4.2 c_cpp_properties.json
includePath 的第一個不用動,后面的要設置成自己的路徑。
{"configurations": [{"name": "win","includePath": ["${workspaceFolder}/**","F:/opencv/build/x64/mingw/install/include","F:/opencv/build/x64/mingw/install/include/opencv2"],"defines": [],"compilerPath": "F:MinGw/bin/g++.exe","cStandard": "c11","cppStandard": "c++17","intelliSenseMode": "${default}"}],"version": 4
}
4.3 tasks.json
{"version": "2.0.0","tasks": [{"type": "shell","label": "opencv3.5.2","command": "F:/MinGw/bin/g++.exe","args": ["-g","${file}","-o","${workspaceFolder}\\Debugger\\${fileBasenameNoExtension}.exe",//上面這個Debugger是我自己定義的,為了方便放置生成的exe文件"F:/opencv/build/x64/mingw/bin/libopencv_world452.dll","-I","F:/opencv/build/x64/mingw/install/include","-I","F:/opencv/build/x64/mingw/install/include/opencv2",],"options": {"cwd": "F:/MinGw/bin"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true}}]
}
五、測試
剛才文件中的Debugger文件夾我們要創建好。里邊會放置自動生成的exe文件。
exe文件執行需要依賴文件。我們還要把依賴文件放到該文件夾中,這樣生成exe文件的時候才能調用該依賴而不出錯。沒有該依賴的話,就無法生成exe文件。
找到該依賴文件:
F:\opencv\build\x64\MinGw\install\x64\mingw\bin
里有兩個ddl文件:
這兩個DDL文件非常重要,在上面的地址中找到,然后拷貝
到 工作目錄中的 Debugger 目錄中即可。否則程序可能生成失敗。
**
libopencv_world452.dll
opencv_videoio_ffmpeg452_64.dll
**
讀者也去相似的目錄去尋找,然后把該文件復制到Debugger目錄下。
然后創建測試文件:(調用攝像頭)
如果讀者有opencv基礎,可以自行測試。我提供一個測試攝像頭的cpp文件。
test.cpp
#include <opencv2/opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;int main()
{VideoCapture cap(0);Mat img;while (1){cap >> img;if (img.empty())break;namedWindow("img", WINDOW_NORMAL);imshow("img", img);if (27 == waitKey(20))break;}return 0;
}
按F5進行運行
能調用攝像頭就說明大功告成 !
嫌麻煩的不想自己編譯的,可以用已經編譯好的,參見鏈接:
參照