sudo apt-get install libssl-dev
解压进入cmake安装目录,执行
./configure
make
make install
下载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
如果没有,那么请参考如下:
源码编译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,则直接可以安装包
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
using namespace std;
#include
#include
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;
}
看到的结果如下