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;
}

看到的结果如下

在这里插入图片描述

参考链接

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