环境:Ubuntu18.04.6
Qt:4.5.2-3ubuntu
OpenCv:4.5.5
Cmake:3.12.2
一、获取OpenCv编码
从opencv官网网址下载opencv源Releases - OpenCV
二、在自己linux下搭建OpenCv编译环境
1.创建一个opencv文件夹,如下所示:
mkdir opencv
2.把下载好的OpenCV压缩包移动到新创的opencv文件夹中解压,可以在终端用 ‘tar’ 命令解压或者直接点压缩包提取;
3.在opencv文件夹下再创建两个文件夹 build和install
mkdir build install
4.安装Cmake和Cmake-gui以及所依赖的库(若出错可以思考一下是否执行了sudo apt update与sudo apt upgrade)
sudo apt-get install cmake-gui
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 cmake cmake-qt-gui cmake-curses-gui
5.进入build文件夹下编译Cmake
cd /opencv/build
cmake-gui
会出现cmake配置界面
6. 配置cmake工具
如下图去设置路径第一个路径是你解压出来的opencv文件夹,第二个路径是咱们自己创的build文件夹。
路径设置完后勾选 Advanced,点击Configure会出现如下界面,选择Unix Makefiles后选择Use default native compilers,然后点击Finish。
在CMAKE_BUILD_TYPE 值处输入RELEASE再在 CMAKE_INSTALL_PREFIX 处指定安装目录, 我们在上面已经新建了 install 安装目录。
我们直接指定到该目录即可。
如果不指定,它会默认安装到 Ubuntu 系统目录/usr/local 下。
等这个步骤构建完,我们先点击 Configure,再点击 Generate就可以生成了。
成功界面如下,且上面的空间没有飘红。
三、编译Opencv源码
修改完后,切换至build文件夹,可以得到如下图示,然后去make,在make完成之后,输入sudo make install来安装opencv源码,会安装在刚才指定的路径下。
四、配置opencv环境变量
环境配置
cd /etc/ld.so.conf.d/
sudo gedit opencv.conf
#创建文件后插入 /home/wang/opencv/install 保存并退出
sudo ldconfig
配置bash
sudo gedit /etc/bash.bashrc
#在末尾添加
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/wang/opencv/install/pkgconfig export PKG_CONFIG_PATH
#保存退出
source /etc/bash.bashrc
sudo updatedb
五、Qt下Opencv的环境搭建
打开Qt去创建一个项目,如下图所示
在test.pro后去添加路径,如下图
添加如下路径,指定了头文件的位置与动态链接库的位置。
/home/ge/opencv/install即为自己指定的安装opencv的目录
INCLUDEPATH += /home/ge/opencv/install/include\
/home/ge/opencv/install/include/opencv4 \
/home/ge/opencv/install/include/opencv4/opencv2
LIBS += /home/ge/opencv/install/lib/libopencv_highgui.so \
/home/ge/opencv/install/lib/libopencv_highgui.so.405 \
/home/ge/opencv/install/lib/libopencv_core.so \
/home/ge/opencv/install/lib/libopencv_imgproc.so \
/home/ge/opencv/install/lib/libopencv_imgcodecs.so
然后可以添加如下代码做测试:
#include
#include
using namespace cv;
using namespace std;
int main() {
Mat src = imread("/home/ge/图片/lena.png");
namedWindow("输入", WINDOW_FREERATIO);
if (src.data != NULL)
imshow("输入", src); //图像必须是8位的
else
cout << "error!!" << endl;
waitKey(0);
destroyAllWindows();
return 0;
}
其中Mat src = imread("/home/ge/图片/lena.png");该代码中imread的参数是图片的位置;
参考:(43条消息) linux下编译opencv_wang@xing的博客-CSDN博客_linux编译opencvhttps://blog.csdn.net/chengziwang/article/details/112145116?spm=1001.2014.3001.5502
若有侵权,请联系作者删除。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)