Ubuntu編譯opencv4.3.0

安裝cmake

依賴openssl

sudo apt-get install libssl-dev

安裝

解壓進入cmake安裝目錄,執行

./configure
make
make install

在這裏插入圖片描述

編譯opencv3.4.10

下載opencv3.4.10,下載地址:https://opencv.org/releases/

安裝qt

sudo apt-get install libqt4-dev

在用apt-get安裝軟件包的時候遇到E: Sub-process /usr/bin/dpkg returned an error code (1)問題,請參考:
解決apt-get安裝中的returned an error code

unzip解壓opencv源代碼

mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_OPENGL=ON ..

使用qt的配置文件

mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_OPENGL=ON WITH_QT=ON ..

不使用opencl的版本

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_OPENGL=ON -DWITH_OPENCL=OFF -DWITH_OPENCL_SVM=OFF ..

cmake的時候可能會遇到,下載IPPICV

IPPICV: Download: ippicv_2020_lnx_intel64_20191018_general.tgz

如果沒有vpn,那麼請參考如下:
源碼編譯opencv卡在IPPICV: Download: ippicv_2017u3_lnx_intel64_general_20170822.tgz解決辦法

我是把聯網關掉,就不需要下載IPPICV了

需要確定g++的版本爲4.8或者以上

先把gcc和g++的版本更改爲4.8

sudo mv gcc gcc.bak
sudo ln -s gcc-4.8 gcc
gcc -v
sudo mv g++ g++.bak
sudo ln -s g++-4.8 g++
g++ -v

編譯完成後,換到gcc4.4的版本(gcc4.4對把ffmpeg.c變爲ffmpeg.cpp十分重要)

sudo apt-get install gcc-4.4 g++-4.4 g++-4.4-multilib
sudo mv gcc gcc.bak
sudo ln -s gcc-4.4 gcc
sudo mv g++ g++.bak
sudo ln -s g++-4.4 g++

如果需要使用xfeatures2d等opencv_contrib擴展,則需要從這裏下載(注意對應版本,tag要留意一下):https://github.com/opencv/opencv_contrib/tree/3.4.10

然後解壓目錄到opencv主目錄中

在這裏插入圖片描述

這時候使用的cmake命令如下

mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=OFF -D WITH_OPENGL=ON -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-3.4.10/modules -DOPENCV_ENABLE_NONFREE=ON ..

中間需要下載對應模塊

在這裏插入圖片描述

測試在eclipse中使用opencv

當然如果只是測試在eclipse中使用opencv,則直接可以安裝包

sudo apt-get install libopencv-dev

這是用apt安裝後so存放的位置

在這裏插入圖片描述

include paths中填入如下內容

/usr/include/
/usr/include/opencv
/usr/include/opencv2

在這裏插入圖片描述

庫搜索路徑如下

/usr/lib/x86_64-linux-gnu

在這裏插入圖片描述

需要引入的庫爲

opencv_imgproc
opencv_highgui
opencv_core

如果出現找不到庫,則在/etc/ld.so.conf.d目錄下新建一個opencv.conf文件並將其內容寫入剛纔找到的庫的路徑

cd /etc/ld.so.conf.d
sudo vi opencv.conf

在opencv.conf中添加如下內容

/usr/local/lib
/home/zeng/ffmpeg/opencv-3.4.10/build/lib

保存後執行

sudo ldconfig

運行一個測試程序

#include "use_opencv.h"
#include <iostream>
using namespace std;
#include <opencv2/opencv.hpp>
#include <opencv2/imgproc/types_c.h>
using namespace cv;//使用命名空間

void test_opencv(char* img_path)
{
	cout << "hello opencv2222." << endl;

	Mat img = imread(img_path, 0); // 讀取圖片 這裏文件地址寫成你想打開的文件的地址或者放在執行目錄裏就不用寫路徑直接使用文件名字
	imshow("load image",img);//在窗口中打開圖片
	waitKey(100000);//等待時間,這裏等待時間最好別填零,要不打開的窗口秒退
}


int main()
{
	char *img_path = "/home/zeng/ffmpeg/ffmpeg-4.2.2/1.jpg";
	test_opencv(img_path);

	return 0;
}

看到的結果如下

在這裏插入圖片描述

參考鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章