【視覺識別】Ubuntu 22.04 上編譯安裝OPENCV 4.12.0 魯班貓V5

系列文章目錄

提示:這里可以添加系列文章的所有文章的目錄,目錄需要自己手動添加
例如:第一章 Python 機器學習入門之pandas的使用


提示:寫完文章后,目錄可以自動生成,如何生成可參考右邊的幫助文檔

文章目錄

  • 系列文章目錄
  • 前言
  • 一、更新環境
  • 二、安裝編譯器和構建工具等
  • 三、安裝各種依賴庫
  • 四、下載OpenCV的源文件
  • 五、生成構建腳本和編譯
  • 六、安裝OPENCV 及配置環境
  • 總結


前言

提示:這里可以添加本文要記錄的大概內容:
網上相關的文章不少,但是很多是python-opencv的,另外一些編譯的的時候會報錯。再返回去查找問題的話也非常麻煩。
基本上參考的這兩篇,其中VSCODE的安裝暫且跳過,vscode的環境配置文件放在連接里了。

Linux/Ubuntu下使用VS Code配置C/C++項目環境調用OpenCV

在arm版ubuntu上編譯安裝c++版本opencv和閉坑指南。


提示:以下是本篇文章正文內容,下面案例可供參考

一、更新環境

魯班貓的22.04在這一步的時候還是更新了不少東西,包括后面的庫的安裝,感覺花了不少時間。

sudo apt-get update
sudo apt-get upgrade

二、安裝編譯器和構建工具等

sudo apt-get install -y g++            # Ubuntu自帶gcc
sudo apt-get install -y cmake
sudo apt-get install -y make
sudo apt-get install -y wget 
sudo apt-get install -y unzip
sudo apt-get install -y git

三、安裝各種依賴庫

這個版本 安裝完成之后 ffmpeg可能會提示問題,原綁定的版本不同之類,建議可以先降級處理完再下一步,畢竟出了問題,像我這種小白也不知道從那里查起。

# 1. 安裝 aptitude
sudo apt install aptitude# 2. 使用 aptitude 安裝
sudo aptitude install ffmpeg
sudo apt-get install build-essential pkg-config sudo apt-get install libgtk2.0-dev libgtk-3-dev libglib2.0-dev libavcodec-dev libavformat-dev libswscale-dev libavutil-dev libv4l-dev liblapacke-dev libxvidcore-dev libx264-devsudo apt-get install python-dev python-numpysudo apt-get install libgstreamer-plugins-base1.0-dev libgstreamer1.0-devsudo apt-get install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper1 libjasper-dev libdc1394-22-dev libopenexr-dev libwebp-devsudo apt-get install libatlas-base-dev gfortran sudo apt-get install ffmpeg

但是這個版本的依賴好像比較少,還有另外一個版本,沒什么想法的可以都安裝。

sudo add-apt-repository ppa:linuxuprising/libpng12
apt-get update && apt-get -y install autoconf automake build-essential cmake ruby libpcre3 libpcre3-dev openssl vim tree lrzsz iproute2 pcregrep procps dnsutils netcat git-core libass-dev libfreetype6-dev libgnutls28-dev libsdl2-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texinfo wget yasm zlib1g-dev checkinstall libfaac-dev libgpac-dev ladspa-sdk-dev libunistring-dev libbz2-dev libjack-jackd2-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libvpx-dev libx264-dev libx265-dev libxvidcore-dev libopenal-dev libopus-dev libsdl1.2-dev libtheora-dev libx11-dev libxfixes-dev texi2html libssl-dev libfdk-aac-dev
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
sudo apt-get install libcanberra-gtk-module
sudo apt-get install pkg-config
sudo apt-get install -y autoconf automake build-essential git libass-dev libfreetype6-dev libsdl2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texinfo wget zlib1g-dev
sudo apt install libswresample-dev
sudo apt install libavutil-dev
sudo apt install libsdl1.2-dev
sudo apt-get install libx264-142
sudo apt-get install libx264-152
apt-get install libtbb2 libtbb-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
sudo apt-get install libpng12-0 libpng12-dev

四、下載OpenCV的源文件

我是直接從官網下載的最新的 4.12.0

五、生成構建腳本和編譯

切換到opencv目錄下

cd opencv/

在build目錄下使用cmake來生成構建腳本,使用如下命令,

cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=ON -D WITH_FFMPEG=ON ..                

但是還是有錯誤,可能跟 FFMPEG的版本有關,建議用下面的

cmake -D CMAKE_BUILD_TYPE=Release –D CMAKE_INSTALL_PREFIX=/usr/local -D ENABLE_PRECOMPILED_HEADERS=OFF -D WITH_FFMPEG=OFF ..

在build目錄下編譯opencv,其實可以用-4就行,系統不會有太大壓力。
一開始編譯的時候 會出

make -j8            

六、安裝OPENCV 及配置環境

sudo make install           

按照這個步驟 完整安裝庫和依賴,之后到這一步很順利,沒有一個報錯。

之后配置環境也應該不會有問題

sudo find / -iname opencv4.pc

按照之前博主的步驟操作 即可

sudo nano /etc/profile.d/pkgconfig.sh#添加
# export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
#刷新環境變量
source /etc/profile
#配置OpenCV的動態庫環境
sudo nano /etc/ld.so.conf.d/opencv4.conf
#添加
# /usr/local/lib
#刷新動態庫環境
sudo ldconfig

之后就按之前博主的操作 開始正式進入工程 開始操作。


總結

提示:這里對文章進行總結:

例如:以上就是今天要講的內容,本文僅僅簡單介紹了pandas的使用,而pandas提供了大量能使我們快速便捷地處理數據的函數和方法。

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

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

相關文章

基于vue的財務管理系統/基于php的財務管理系統

基于vue的財務管理系統/基于php的財務管理系統

機器學習技術在訂單簿大單檢測中的應用研究

訂單簿數據的特點 訂單簿(Order Book)是記錄市場上所有未成交買賣訂單的數據結構,通常包括價格、數量、買賣方向等信息。訂單簿數據具有以下特點: 高頻率:訂單簿數據更新速度極快,通常以毫秒甚至微秒為單位…

Spring MVC框架中DispatcherServlet詳解

1. DispatcherServlet概述1.1 什么是DispatcherServlet?DispatcherServlet是Spring MVC框架的核心組件,它本質上是一個Java Servlet,作為前端控制器(Front Controller)負責接收所有HTTP請求,并根據特定規則將請求分發到相應的處理…

DBA急救手冊:拆解Oracle死鎖圖,ORA-00060錯誤秒級定位終極指南

關于“死鎖圖”(Deadlock Graph)的一點淺見 當 Oracle 檢測到死鎖時,檢測到死鎖的會話中的當前 SQL 將被取消,并執行“語句級回滾”,以釋放資源并避免阻塞所有活動。 檢測到死鎖的會話仍然“存活”,并且事務…

C++中的默認函數學習

今天在學習QT別人的項目時看到有個函數在聲明和調用時參數個數不一樣,查了下是c中的一種函數類型,這個類型的函數可以讓代碼更簡潔、靈活。定義:在函數聲明時,給某些參數預先設定一個默認值。調用函數時,如果省略這些參…

HBase分片技術實現

HBase分片技術實現概述HBase是基于Hadoop的分布式、可擴展的NoSQL數據庫,采用列族存儲模型。HBase的分片機制通過Region自動分割和負載均衡實現水平擴展,支持PB級數據存儲和高并發訪問。HBase架構核心組件HMaster: 集群管理節點,負責Region分…

Python爬蟲實戰:研究awesome-python工具,構建技術資源采集系統

1. 引言 1.1 研究背景 Python 憑借語法簡潔、生態豐富等特點,已成為全球最受歡迎的編程語言之一。截至 2024 年,PyPI(Python Package Index)上的第三方庫數量已突破 45 萬個,涵蓋從基礎工具到前沿技術的全領域需求。然而,海量資源也帶來了 "信息過載" 問題 —…

【實時Linux實戰系列】實時視頻監控系統的開發

隨著技術的不斷發展,實時視頻監控系統在安防、交通管理、工業自動化等領域得到了廣泛應用。實時Linux系統因其高效的實時性和穩定性,成為開發高性能視頻監控系統的理想選擇。掌握基于實時Linux的視頻監控系統開發技能,對于開發者來說不僅能夠…

力扣-11.盛最多水的容器

題目鏈接 11.盛最多水的容器 class Solution {public int maxArea(int[] height) {int res 0;for (int i 0, j height.length - 1; i < j; ) {res Math.max(res, Math.min(height[i], height[j]) * (j - i));if (height[i] < height[j]) {i;} else {j--;}}return r…

大型音頻語言模型論文總結

大型音頻語言模型&#xff08;Large Audio Language Model, LALM&#xff09;是一類基于深度學習的智能系統&#xff0c;專門針對音頻信號&#xff08;如語音、音樂、環境聲等&#xff09;進行理解、生成、轉換和推理。它借鑒了大型語言模型&#xff08;LLM&#xff09;的“預訓…

如何解決網頁視頻課程進度條禁止拖動?

function skip() {let video document.getElementsByTagName(video)for (let i0; i<video.length; i) {video[i].currentTime video[i].duration} } setInterval(skip,6666)無法拖動視頻進度。 使用F12啟動調試模式。 function skip() {let video document.getElements…

基于deepSeek的流式數據自動化規則清洗案例【數據治理領域AI帶來的改變】

隨著AI大模型的大量普及&#xff0c;對于傳統代碼模式產生了不小的影響&#xff0c;特別是對于大數據領域&#xff0c;傳統的規則引擎驅動的數據治理已經無法滿足數據增長帶來的治理需求。因此主動型治理手段逐漸成為主流&#xff0c;因此本文介紹一個基于deepSeek的流式數據自…

【論文分析】【Agent】SEW: Self-Evolving Agentic Workflows for Automated Code Generatio

1.論文信息標題&#xff1a;SEW: Self-Evolving Agentic Workflows for Automated Code Generatio&#xff1a;用于自動代碼生成的自我進化的代理工作流程收錄的會議/期刊&#xff1a;作者信息&#xff1a;arxiv&#xff1a;&#x1f517;github網站&#xff1a;&#x1f517;g…

MCP 協議:AI 時代的 “萬能轉接頭”,從 “手動粘貼” 到 “萬能接口”:MCP 協議如何重構 AI 工具調用規則?

注&#xff1a;此文章內容均節選自充電了么創始人&#xff0c;CEO兼CTO陳敬雷老師的新書《GPT多模態大模型與AI Agent智能體》&#xff08;跟我一起學人工智能&#xff09;【陳敬雷編著】【清華大學出版社】 清華《GPT多模態大模型與AI Agent智能體》書籍配套視頻課程【陳敬雷…

VUE本地構建生產環境版本用于局域網訪問

&#x1f680;構建生產環境版本用于局域網訪問&#xff08;適用于 Vue 項目&#xff09; 在開發 Vue 項目的過程中&#xff0c;很多人使用 yarn serve 啟動開發服務器進行調試。但開發模式存在以下問題&#xff1a; 訪問速度慢&#xff0c;特別是局域網訪問&#xff1b;熱更新頻…

【密碼學】5. 公鑰密碼

這里寫自定義目錄標題公鑰密碼密碼學中的常用數學知識群、環、域素數和互素數模運算模指數運算費爾馬定理、歐拉定理、卡米歇爾定理素性檢驗歐幾里得算法中國剩余定理&#xff08;CRT&#xff09;離散對數二次剩余循環群循環群的選取雙線性映射計算復雜性公鑰密碼體制的基本概念…

VINS-Fusion+UWB輔助算法高精度實現

VINS-FusionUWB輔助算法高精度實現 摘要 本文詳細介紹了基于VINS-Fusion框架結合UWB輔助的高精度定位算法實現。通過將視覺慣性里程計(VIO)與超寬帶(UWB)測距技術融合&#xff0c;顯著提高了復雜環境下的定位精度和魯棒性。本文首先分析了VINS-Fusion和UWB各自的技術特點&#…

新手向:Python實現簡易計算器

你是否一直想學習編程但不知從何入手&#xff1f;這篇詳細的教程將帶領完全零基礎的讀者&#xff0c;循序漸進地掌握如何用Python實現一個簡易計算器。我們將從最基本的編程概念講起&#xff0c;確保每一位初學者都能跟上進度。準備工作在開始之前&#xff0c;你需要&#xff1…

區塊鏈賦能供應鏈金融:解決信任與效率問題

摘要: 隨著全球經濟一體化和數字化進程的加速,供應鏈金融在實體經濟發展中的作用愈發關鍵。然而,傳統供應鏈金融面臨著信任機制薄弱和效率低下等諸多挑戰。區塊鏈技術憑借其去中心化、不可篡改、可追溯等特性,為供應鏈金融帶來了創新的解決方案,能夠有效解決信任與效率問題…

無人機 × 巡檢 × AI識別:一套可復制的超低延遲低空視頻感知系統搭建實踐

?? 引言&#xff1a;低空感知&#xff0c;正重構數字世界的“底層感官接口” 隨著低空經濟進入規模化部署階段&#xff0c;感知系統不再是“任務輔助”&#xff0c;而是演變為支撐智能化運行的基礎設施核心模塊。從電力巡檢的高空細節識別&#xff0c;到城市安防的區域態勢掌…