1. 程式人生 > 其它 >Ubuntu18.04下opencv3.4.3編譯與安裝,及常見問題記錄

Ubuntu18.04下opencv3.4.3編譯與安裝,及常見問題記錄

技術標籤:安裝、配置問題集錦opencv

引言

博主前段時間在搞tensorrt的INT8量化的時候,安裝opencv,連續安裝了好幾次都報錯,一直放著沒解決。
最近專案需要,又得自己安裝opencv,然後一次莫名奇妙的成功,一次順順利利,特來做個總結,記錄一下。

編譯安裝過程記錄

官網下載所需要的版本
選擇所需要的版本,然後點 Source code(zip)下載,這裡版本下的是3.4.3,這個版本安裝好像比較順利(忘了之前安裝失敗的版本是什麼了)。

首先,安裝一些依賴,根據自己的情況選擇,如果不知道自己安裝了那些依賴,就都輸入一遍,如果已經安裝系統會自動跳過,不會重複安裝

sudo
apt-get install build-essential sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

然後

unzip opencv-3.4.3.zip
# 你的opencv的zip檔案
cd ~/opencv-3.4.3 # 進入opencv資料夾 mkdir build # 建立build資料夾 cd build # 進入build資料夾 #cmake指令,如果沒有特殊要求建議就選擇預設的就可以 #注意,後面的兩個點千萬不能省,代表了上級目錄 cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local .. make -j7 # 多執行緒執行make任務 # 最後一步,安裝庫檔案 sudo make install #安裝完成

中途沒報錯,就是安裝成功了。

常見問題

1. Ubuntu18.04下安裝OpenCv依賴包libjasper-dev無法安裝的問題
sudo apt-get install libjaster-dev

提示:errorE: unable to locate libjasper-dev

解決方法

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev

成功的解決了問題,其中libjasper1是libjasper-dev的依賴包

上面方法博主親測有用,如果你使用上面方法不行的話,可以參考該部落格的評論區方法:Ubuntu18.04下安裝OpenCv依賴包libjasper-dev無法安裝的問題,呼聲很高!!!

之前遇到的話,網上的解決方法是靠全部更改為老版本的清華源 替換原有 /etc/apt/sources.list,此方法個人建議不要嘗試,替換後可能導致下次安裝包的時候,和已有的包產生版本不相容問題。當然如果你自己能承擔這種風險,完全ojbk,隨手甩一個連結:64位ARM提示:errorE: unable to locate libjasper-dev

2. Unable to correct problems, you have held broken packages

由於安裝包的版本太新,其依賴包和舊版本衝突導致

在這裡插入圖片描述

Linux下經常需要安裝不同型別的庫,在Ubuntu中,這些類庫都是以“lib_name-version”的形式命名的。很多庫之間存在依賴關係,即要安裝這個就必須安裝那個。有時候,類庫之間依賴關係無法滿足,你所要安裝的程式就不能安裝。
這類問題大多是由於相互依賴的幾個庫中一個或多個的版本已經更新,而使用者要安裝的庫依賴於這幾個庫的較低的版本。

這也就是我之前前幾次一直遇到的問題,博主試了很多種方法,增加源以及下面的方法,都不行

sudo aptitude install xxxx
# xxxx為你要安裝的程式的名字)

這個方法需要安裝aptitude

aptitude與 apt-get 一樣,是 Debian 及其衍生系統中功能極其強大的包管理工具。與 apt-get 不同的是,aptitude在處理依賴問題上更佳一些。舉例來說,aptitude在刪除一個包時,會同時刪除本身所依賴的包。這樣,系統中不會殘留無用的包,整個系統更為乾淨。

但是網上有人說這個工具跟apt-get命令不相容,二者只能存在一個,博主自己安裝了aptitude,最終也沒能成功安裝和編譯,如果哪天有遇到,再來這裡記錄補充。

來自兩位博友的評論:
溫馨提醒:aptitude包(命令)與apt-get包(命令)不相容,二者只能取其一,安裝前請慎重。
ubuntu 18.04 安裝aptitude不能使用,導致apt-get也被解除安裝。需要重新下載deb包,用dpkg安裝,各位童鞋慎重。

其他方法
上一次遇到這個問題,博主直接跳過了,直接解壓opencv(親測在opencv3.4.3可以),然後編譯成功了,而且使用起來也沒有什麼問題。其他版本的話,不清楚,建議實在不知道解決方法的時候,可以僥倖的試試hhhhh

3. 待補充