VScode搭建Opencv(C++開發環境)

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進行運行
能調用攝像頭就說明大功告成 !

嫌麻煩的不想自己編譯的,可以用已經編譯好的,參見鏈接:
參照

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/41134.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/41134.shtml
英文地址,請注明出處:http://en.pswp.cn/news/41134.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JAVA基礎知識(一)——Java語言描述、變量和運算符

TOC(Java語言描述、變量和運算符) 一、JAVA語言描述 1.1 java語言描述 JDK、JRE、jVM三者之間的關系&#xff0c;以及JDK、JRE包含的主要結構有哪些&#xff1f; JDKJre java的開發工具&#xff08;javac.exe java.exe javadoc.exe&#xff09; jre jvmjava的核心類庫 為什…

C++策略模式

1 簡介&#xff1a; 策略模式是一種行為型設計模式&#xff0c;用于在運行時根據不同的情況選擇不同的算法或行為。它將算法封裝成一個個具體的策略類&#xff0c;并使這些策略類可以相互替換&#xff0c;以達到動態改變對象的行為的目的。 2 實現步驟&#xff1a; 以下是使用…

【JavaEE基礎學習打卡03】Java EE 平臺有哪些內容?

目錄 前言一、Java EE平臺說明二、Java EE平臺容器及組件1.平臺容器2.平臺組件 三、JavaEE平臺API服務1.API服務概覽2.平臺API 總結 前言 &#x1f4dc; 本系列教程適用于Java Web初學者、愛好者&#xff0c;小白白。我們的天賦并不高&#xff0c;可貴在努力&#xff0c;堅持不…

使用CLI添加磁盤到VM

登錄 https://portal.azure.com/#home&#xff0c;點擊右上角的控制臺圖標 &#xff0c;打開CLI 在控制臺中輸入如下指令&#xff0c;在NetworkWatcherRG創建一個名字為TEST的虛擬機&#xff0c;使用的鏡像是Win2019datacenter&#xff0c;username是aaa,password是1234567890A…

mysql的快速復習 和一些思考記錄

數據庫設計 第一范式&#xff1a;有主鍵&#xff0c;具有原子性&#xff0c;字段不可分割 數據庫表中不能出現重復記錄&#xff0c;每個字段是原子性的不能再分 關于第一范式&#xff0c;每一行必須唯一&#xff0c;也就是每個表必須有主鍵。 每一列不可再分&#xff01;&#…

Sui主網升級至V1.7.1版本

Sui主網現已升級至V1.7.1版本&#xff0c;此升級包含了多項修復和優化。升級要點如下所示&#xff1a; #12915 協議版本提升至20版本。 在Sui框架中新增Kiosk Extensions API和一個新的sui::kiosk_extension模塊。 您可以使用該API構建自定義的Kiosk應用程序&#xff0c;以…

okhttp源碼簡單流程分析

攔截器詳細解析可以看大佬簡書 "https://www.jianshu.com/p/6fac73f7570f"和 “https://www.jianshu.com/p/3c740829475c” okhttp請求流程 1&#xff1a;OkHttpClient okHttpClient new OkHttpClient.Builder() 構建一個okhttpClient對象&#xff0c;傳入你想傳入的…

vector使用以及模擬實現

vector使用以及模擬實現 vector介紹vector常用接口1.構造2.迭代器3.容量4.增刪查改5.練習 vector模擬實現1.迭代器失效2.反向迭代器3.完整代碼 vector介紹 和我們原來講的string不同&#xff0c;vector并不是類&#xff0c;是一個類模板&#xff0c;加<類型>實例化以后才…

主機防護的重要性和方式

01 主機防護的重要性 主機防護是網絡安全的重要組成部分。在互聯網時代&#xff0c;網絡攻擊成為了一種常見的威脅&#xff0c;而主機防護則是保護計算機系統免受網絡攻擊的重要手段。 主機防護可以防范各種網絡攻擊&#xff0c;如病毒、木馬、黑客攻擊等&#xff0c;從而保…

氣象監測站:用科技感知氣象變化

氣象監測站是利用科學技術感知當地小氣候變化情況的氣象觀測儀器&#xff0c;可用于農業、林業、養殖業、畜牧業、環境保護、工業等多個領域&#xff0c;提高對環境數據的利用率&#xff0c;促進產業效能不斷提升。 氣象監測站主要由氣象傳感器、數據傳輸系統、電源系統、支架…

Linux debian12解壓和壓縮.rar文件教程

一、Debian12安裝rar命令 sudo apt install rar二、使用rar軟件 1.解壓文件 命令格式&#xff1a; rar x 文件名.rar實力測試&#xff1a; [rootdoudou tmp]# rar x test.rar2.壓縮文件 test是一個文件夾 命令格式&#xff1a; rar a 文件名.rar 文件夾名實例測試&#x…

centos7 yum獲取軟件所有依賴包 創建本地yum源 yum離線安裝軟件

centos7 yum獲取軟件所有依賴包 創建本地yum源 離線安裝軟件 1、以安裝docker 20.10為例2、centos7 yum獲取docker 20.10 所有依賴包3、創建本地docker yum源4、yum使用本地docker源 離線安裝docker 1、以安裝docker 20.10為例 參考鏈接&#xff1a; 添加docker 清華軟件源 y…

git環境超詳細配置說明

一&#xff0c;簡介 在git工具安裝完成之后&#xff0c;需要設置一下常用的配置&#xff0c;如郵箱&#xff0c;縮寫&#xff0c;以及git commit模板等等。本文就來詳細介紹些各個配置如何操作&#xff0c;供參考。 二&#xff0c;配置步驟 2.1 查看當前git的配置 git conf…

使用 Apache Kafka 和 Go 將數據引入 OpenSearch

需要編寫自定義集成層來滿足數據管道中的特定要求&#xff1f;了解如何使用 Go 通過 Kafka 和 OpenSearch 實現此目的。 可擴展的數據攝取是OpenSearch等大規模分布式搜索和分析引擎的一個關鍵方面。構建實時數據攝取管道的方法之一是使用Apache Kafka。它是一個開源事件流平臺…

單詞倒排(C語言詳解)

題目&#xff1a;單詞倒排 描述&#xff1a;對字符串中的所有單詞進行倒排。 說明&#xff1a; 1、構成單詞的字符只有26個大寫或小寫英文字母&#xff1b; 2、非構成單詞的字符均視為單詞間隔符&#xff1b; 3、要求倒排后的單詞間隔符以一個空格表示&#xff1b;如果原字…

米爾瑞薩RZ/G2L開發板-02 ffmpeg的使用和RTMP直播

最近不知道是不是熬夜太多&#xff0c;然后記憶力減退了&#xff1f; 因為板子回來以后我就迫不及待的試了一下板子&#xff0c;然后發現板子有SSH&#xff0c;但是并沒有ffmpeg&#xff0c;最近總是在玩&#xff0c;然后今天說是把板子還原一下哇&#xff0c;然后把官方的固件…

前端單點登錄SSO面試回答

JWT鑒權機制 1.JWT用于登錄身份驗證 2.用戶登錄成功后&#xff0c;后端通過JWT機制生成一個token&#xff0c;返回給客戶端 3.客戶端后續的每次請求都需要攜帶token&#xff0c;放在header的authorization中 4.后端從authorization中拿到token后&#xff0c;通過secretKey進…

Spring Boot中使用validator如何實現接口入參自動檢驗

文章目錄 一、背景二、使用三、舉例 一、背景 在項目開發過程中&#xff0c;經常會對一些字段進行校驗&#xff0c;比如字段的非空校驗、字段的長度校驗等&#xff0c;如果在每個需要的地方寫一堆if else 會讓你的代碼變的冗余笨重且相對不好維護&#xff0c;如何更加規范和優…

微服務-GateWay(網關)

所謂網關是什么意思&#xff1f; 相當于就是你們小區家的保安&#xff0c;進出小區都得獲得保安的同意&#xff0c;守護你們小區的生命財產健康&#xff0c;網關也是如此&#xff0c;對每個請求都嚴格把關&#xff0c;將合法的或者是獲得權限的請求進入服務器 網關的功能&…

設計模式之解釋器模式詳解及實例

1、解釋器設計模式概述&#xff1a; 解釋器模式&#xff08;Interpreter Pattern&#xff09;是一種設計模式&#xff0c;它主要用于描述如何構建一個解釋器以解釋特定的語言或表達式。該模式定義了一個文法表示和解釋器的類結構&#xff0c;用于解釋符合該文法規則的語句。解…