Ubuntu 20.04下配置VSCode以支持OpenCV庫開發

Ubuntu 20.04下配置VSCode以支持OpenCV庫開發

      • 1. 安裝OpenCV庫
        • 安裝OpenCV(推薦使用APT安裝)
        • 或者從源碼安裝OpenCV(可選)
      • 2. 安裝VSCode的C++擴展
      • 3. 配置`c_cpp_properties.json`
      • 4. 編寫代碼并測試
      • 5. 配置`tasks.json`(編譯OpenCV程序)
      • 6. 運行程序
      • 7. 安裝其他依賴(可選)
      • 8. 使用CMake(可選)
      • 總結

在VSCode中配置OpenCV需要確保OpenCV庫已正確安裝,并在VSCode中配置相關路徑和編譯選項。以下是詳細步驟:


1. 安裝OpenCV庫

在Ubuntu 20.04上,可以通過以下命令安裝OpenCV庫:

安裝OpenCV(推薦使用APT安裝)
sudo apt update
sudo apt install libopencv-dev

安裝完成后,OpenCV庫的頭文件和庫文件會分別存放在/usr/include/opencv4/usr/lib/x86_64-linux-gnu目錄下。

或者從源碼安裝OpenCV(可選)

如果需要最新版本的OpenCV,可以從源碼編譯安裝。具體步驟可以參考OpenCV官方文檔。


2. 安裝VSCode的C++擴展

確保VSCode已安裝C/C++擴展:

  1. 打開VSCode。
  2. 進入擴展市場(Ctrl+Shift+X)。
  3. 搜索“C/C++”并安裝Microsoft提供的C/C++擴展。

3. 配置c_cpp_properties.json

為了讓VSCode正確識別OpenCV庫的頭文件,需要配置c_cpp_properties.json文件:

  1. 打開VSCode,進入你的C++項目。
  2. 按下Ctrl+Shift+P,輸入“C/C++: Edit Configurations (UI)”并選擇。
  3. 在打開的界面中,找到“Include Path”設置。
  4. 添加OpenCV庫的頭文件路徑(例如/usr/include/opencv4)。

或者,可以直接編輯.vscode/c_cpp_properties.json文件,內容如下:

{"configurations": [{"name": "Linux","includePath": ["${workspaceFolder}/**","/usr/include/opencv4"  // OpenCV頭文件路徑],"defines": [],"compilerPath": "/usr/bin/g++","cStandard": "c11","cppStandard": "c++17","intelliSenseMode": "gcc-x64"}],"version": 4
}

4. 編寫代碼并測試

創建一個簡單的C++文件(如main.cpp),測試OpenCV庫是否配置成功:

#include <opencv2/opencv.hpp>
#include <iostream>int main() {cv::Mat image = cv::imread("test.jpg");  // 讀取圖片if (image.empty()) {std::cerr << "Could not open or find the image!" << std::endl;return -1;}cv::imshow("Display window", image);  // 顯示圖片cv::waitKey(0);  // 等待按鍵return 0;
}

5. 配置tasks.json(編譯OpenCV程序)

為了編譯OpenCV程序,需要配置tasks.json文件:

  1. 打開VSCode,按下Ctrl+Shift+P,輸入“Tasks: Configure Task”并選擇。
  2. 選擇“Create tasks.json file from template” -> “Others”。
  3. 編輯生成的tasks.json文件,內容如下:
{"version": "2.0.0","tasks": [{"label": "build","type": "shell","command": "g++","args": ["-std=c++17","-I/usr/include/opencv4",  // OpenCV頭文件路徑"${file}","-o","${fileDirname}/${fileBasenameNoExtension}","-lopencv_core",           // 鏈接OpenCV庫"-lopencv_imgcodecs","-lopencv_highgui"],"group": {"kind": "build","isDefault": true},"problemMatcher": ["$gcc"],"presentation": {"reveal": "always"}}]
}
  1. 保存后,按下Ctrl+Shift+B即可編譯當前文件。

6. 運行程序

編譯成功后,在終端中運行生成的可執行文件:

./main

如果程序能夠正確顯示圖片(如test.jpg),說明OpenCV庫配置成功。


7. 安裝其他依賴(可選)

如果編譯時提示缺少其他依賴庫,可以通過以下命令安裝:

sudo apt install build-essential cmake libgtk2.0-dev pkg-config

8. 使用CMake(可選)

如果你的項目使用CMake管理,可以創建一個CMakeLists.txt文件,內容如下:

cmake_minimum_required(VERSION 3.10)
project(OpenCVTest)find_package(OpenCV REQUIRED)add_executable(main main.cpp)
target_link_libraries(main ${OpenCV_LIBS})

然后在VSCode中配置CMake工具:

  1. 安裝CMake擴展(搜索“CMake Tools”并安裝)。
  2. 打開項目文件夾,VSCode會自動檢測CMakeLists.txt并生成構建配置。

總結

通過以上步驟,你可以在VSCode中成功配置OpenCV庫,并編寫、編譯和運行使用OpenCV的C++代碼。關鍵步驟包括:

  1. 安裝OpenCV庫。
  2. 配置c_cpp_properties.json以包含OpenCV頭文件路徑。
  3. 配置tasks.json以支持編譯和鏈接OpenCV庫。

如果遇到問題,可以檢查OpenCV庫的安裝路徑是否正確,并確保所有依賴庫已安裝。

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

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

相關文章

io學習----->標準io

思維導圖&#xff1a; 一.io的作用 io是實現對文件的操作&#xff0c;把運行結果存到文件中&#xff0c;讀取文件的數據&#xff0c;方便后期查詢。 二.io的概念 io是指系統 和外部設備或用戶之間的數據交互 I:input 表示數據從外部設備輸入到內存中&#xff1b; O:output…

使用消息隊列怎樣防止消息重復?

大家好&#xff0c;我是君哥。 使用消息隊列時&#xff0c;我們經常會遇到一個可能對業務產生影響的問題&#xff0c;消息重復。在訂單、扣款、對賬等對冪等有要求的場景&#xff0c;消息重復的問題必須解決。 那怎樣應對重復消息呢&#xff1f;今天來聊一聊這個話題。 1.三…

005 公網訪問 docker rocketmq

文章目錄 創建自定義網絡創建NameServer容器創建Broker容器正式開始啟動 Nameserver 容器啟動 Broker 容器并關聯 Nameserverdocker exec -it rmqbroker vi /etc/rocketmq/broker.conf檢查 namesrv 解析檢查 Broker 注冊狀態Nameserver 日志Broker 日志檢查容器日志手動指定 Br…

解決Docker Desktop啟動后Docker Engine stopped問題

一、問題描述 當我們更新了Docker Desktop后,在重新打開就顯示【Docker Engine stopped(Docker引擎已經停止)】,無法正常使用Docker,如下圖所示: 二、問題分析 1、檢查電腦主板的CPU是否開啟虛擬化; 2、需檢查Docker所需的功能是否開啟; 3、檢查WSL是否匹配; Docker的…

MongoDB—(一主、一從、一仲裁)副本集搭建

MongoDB集群介紹&#xff1a; MongoDB 副本集是由多個MongoDB實例組成的集群&#xff0c;其中包含一個主節點&#xff08;Primary&#xff09;和多個從節點&#xff08;Secondary&#xff09;&#xff0c;用于提供數據冗余和高可用性。以下是搭建 MongoDB 副本集的詳細步驟&am…

C++STL---<limits>

C <limits> 頭文件&#xff1a; <limits> 頭文件是 C 標準庫中用于獲取各種數據類型的數值范圍、精度等信息的工具。它通過模板類 std::numeric_limits 提供了對基本數據類型&#xff08;如 int、float、double 等&#xff09;的詳細屬性查詢功能。通過 std::nume…

藍橋杯自我復習打卡

總復習&#xff0c;打卡1. 一。排序 1。選段排序 太可惡了&#xff0c;直接全排輸出&#xff0c;一個測試點都沒過。 AC 首先&#xff0c;這個【l,r】區間一定要包含p,或者q&#xff0c;pq一個都不包含的&#xff0c;[l,r]區間無論怎么變&#xff0c;都對ans沒有影響。 其次&…

Flutter_學習記錄_實現列表上拉加載更多的功能

可以用ScrollController組件來實現這樣列表上拉加載更多的功能: 1. 定義變量 在StatefulWidget 的組件內&#xff0c;添加三個屬性&#xff1a; // 滾動視圖的控制器final ScrollController _scrollController ScrollController();// 是否已顯示了上拉加載中bool _isShowM…

【Linux】【網絡】不同子網下的客戶端和服務器通信其它方式

【Linux】【網絡】不同子網下的客戶端和服務器通信其它方式 那么&#xff0c;在 NAT 環境下&#xff0c;應該如何讓內網設備做為服務器&#xff0c;使內網設備被外部連接&#xff1f; 1 多撥 部分運營商&#xff0c;支持在多個設備上&#xff0c;通過 PPPoE 登錄同一個寬帶賬…

《Python百練成仙》31-40章(不定時更新)

第卅一章 函數結丹def開紫府 羅酆山的鬼門關吞吐著猩紅的變量陰風&#xff0c;每個風眼都涌動著作用域混亂的靈力亂流。葉軍手握薛香遺留的丹田玉簡&#xff0c;玉簡表面浮現出殘缺的函數符文&#xff1a; def 凝聚金丹(靈氣):道基 靈氣 * 0.618print(金丹品質) # 作用域外變…

六十天前端強化訓練之第一天到第七天——綜合案例:響應式個人博客項目

歡迎來到編程星辰海的博客講解 目錄 前言回顧 HTML5與CSS3基礎 一、知識講解 1. 項目架構設計&#xff08;語義化HTML&#xff09; 2. 響應式布局系統&#xff08;Flex Grid&#xff09; 3. 樣式優先級與組件化設計 4. 完整響應式工作流 二、核心代碼示例 完整HTML結…

測試的BUG分析

在了解BUG之前,我們要先了解軟件測試的生命周期,因為大多數BUG都是在軟件測試的過程中被發現的 軟件測試的生命周期 在了解 軟件測試的生命周期 之前,我們要先了解 軟件的生命周期 ,雖然他們之間只差了兩個字,但是差距還是很大的 首先是 軟件生命周期 ,這個是站在 軟件 的角…

【洛谷貪心算法題】P1094紀念品分組

該題運用貪心算法&#xff0c;核心思想是在每次分組時&#xff0c;盡可能讓價格較小和較大的紀念品組合在一起&#xff0c;以達到最少分組的目的。 【算法思路】 輸入處理&#xff1a;首先讀取紀念品的數量n和價格上限w&#xff0c;然后依次讀取每件紀念品的價格&#xff0c;…

[STM32]從零開始的STM32 BSRR、BRR、ODR寄存器講解

一、前言 學習STM32一陣子以后&#xff0c;相信大家對STM32 GPIO的控制也有一定的了解了。之前在STM32 LED的教程中也教了大家如何使用寄存器以及庫函數控制STM32的引腳從而點亮一個LED&#xff0c;之前的寄存器只是作為一個引入&#xff0c;并沒有深層次的講解&#xff0c;在教…

SQL分組問題

下列為電商公司用戶訪問時間數據 統計某個用戶連續的訪問記錄&#xff0c;如果時間間隔小于60s&#xff0c;就分為一組 id ts 1001 17523641234 1001 17523641256 1002 17523641278 1001 17523641334 1002 17523641434 1001 17523641534 1001 17523641544 1002 17523…

3月2日 C++日常習題測試一答案

C測試題答案與講解 一、填空題答案及講解 答案&#xff1a;const 講解&#xff1a;在 C 中&#xff0c;const關鍵字用于定義常量&#xff0c;一旦定義&#xff0c;其值不能被修改。例如const int num 10;&#xff0c;這里的num就是一個常量。 答案&#xff1a;3 講解&…

2W8000字 LLM架構文章閱讀指北

? 大模型架構專欄已經更新了30多篇文章。完整的專欄內容歡迎訂閱&#xff1a; LLM 架構專欄 1、LLM大模型架構專欄|| 從NLP基礎談起 2、 LLM大模型架構專欄|| 自然語言處理&#xff08;NLP&#xff09;之建模 3、 LLM大模型架構之詞嵌入&#xff08;Part1&#xff09; 3、 LLM…

SP導入智能材質球

智能材質球路徑 ...\Adobe Substance 3D Painter\resources\starter_assets\smart-materials 放入之后就會自動刷新

網絡原理----TCP/IP(3)

核心機制七----延時應答 默認情況下&#xff0c;接收方都是在收到數據報的第一時間&#xff0c;就返回ack&#xff0c;但是可以通過延時返回ack的方式來提高效率&#xff0c;理論上不是100%提高效率&#xff0c;但還是有一定幫助的。 因為如果接收數據的主機?刻返回ACK應答,…

MacBook Pro使用FFmpeg捕獲攝像頭與麥克風推流音視頻

FFmpeg查看macos系統音視頻設備列表 ffmpeg -f avfoundation -list_devices true -i "" 使用攝像頭及麥克風同時推送音頻及視頻流: ffmpeg -f avfoundation -pixel_format yuyv422 -framerate 30 -i "0:1" -c:v libx264 -preset ultrafast -b:v 1000k -…