之前在windows装过opencv,编译环境也是Qt,这次想说在ubuntu下也装个,但总是遇到各种皮皮虾问题。这里我借鉴下一位网友的安装教程:https://blog.csdn.net/jindunwan7388/article/details/80397700#commentBox ,安装的步骤可以参照这篇博客。这里主要说明这篇博客中的第三,四中的存在问题以及解决方法(主要是第四步环境的搭建)。以及后续在Qt上搭建环境。
opencv的版本可以到以下网站进行下载:https://github.com/opencv 建议分别下载opencv和opencv_contrib的相应版本博主这里下载的是opencv3.4.3和opencv_contrib3.4.3(不用担心版本选择对安装的影响,基本上是没区别的)。
一.下载和添加依赖包
sudo apt-get update
sudo apt-get upgrade //更新下系统
/*安装依赖包*/
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
二.安装和配置
1,安装cmake
cmake的安装有很多方法,自行百度,就不介绍了。
2,安装opencv
(1),解压下载的opencv3.4.3和opencv_contrib3.4.3两个压缩包到所需要的目录。
(2),解压出来后,在opencv3.4.3动目录下创建一个新的目录build。
注:可以直接右键点创建文件,也可以使用终端,进入该目录下,然后mkdir build。
(3),打开cmake-gui
注:在应用程序中打开或使用终端命令 cmake-gui。
where is the source code: 这个是要填你解压出来opencv的安装包路径(不是opencv_contrib)
where to build the binaries: 这个是要填之前创建动build文件夹的路径
接着直接点右下角Configure,再点finish(会跳出如下图的窗口)。
接着就会出现如图红色的配置信息
以下红色部分中有一些地方需要改动:i:在CMAKE_BUILD_TYPE 值处输入RELEASE
ii:在OPENCV_EXTRA_MODULES_PATH处添加opencv-contrib3.4.3目录下的moduels
接着点击generate(这里完了可能会出现很多问题,会提示找不到某些包之类的,具体什么情况要看个人,这些都可以百度看需要再装什么)。处理完这些后再点一次Configure和Generate。
(4),使用终端进入build文件夹目录下。然后输入make ,回车,接着输入sudo make install。等待完成就可以了。
3,配置Opencv环境变量
//在终端中输入以下命令,会跳出一个新的文件,这个文件是只读类型的
//可以使用su获取权限,进入/etc/ld.so.conf.d/,再使用 chmod 777 opencv.conf修改成可读写
//在跳出来动这个文件中添加build/lib的路径
sudo gedit /etc/ld.so.conf.d/opencv.conf
//保存完文件后,在终端输入命令配置库
sudo ldconfig
接着在build目录下的unix-install找到opencv.cp文件,并修改第二行的路径,路径为之前创建的build文件夹路径,接着保存。(还是使用chmod 777 opencv.cp修改权限)
将保存的opencv文件copy到/usr/local/lib,接着更改环境变量
sudo gedit /etc/bash.bashrc
在弹出来的文件后面添加
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib
export PKG_CONFIG_PATH
注: 如果不copy到/usr/local/lib也是可以的,只要修改成opencv.pc的路径就可以,如PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/icon/Qt/opencv/opencv-3.4.3/build/unix-install
这样opencv就算安装完成了。使用pkg-config --modversion opencv查看版本。
三. Qt中使用opencv
1,创建一个Non-Qt project Plain C++ application项目。在.pro文件中添加头文件路径和动态链接库动路径。
INCLUDEPATH += /*这里是下载的opencv安装包目录下的include中的opencv和opencv2两个文件夹。注意这是下载解压后的文件夹中的,而不是build文件中的*/
LIBS += /*这里是上面所创建动build文件夹中的lib文件夹目录下的所有.so文件。注:这里可以根据自己需要添加所需的动态链接库。*/
INCLUDEPATH += /home/icon/Qt/opencv/opencv-3.4.3/include/opencv\
/home/icon/Qt/opencv/opencv-3.4.3/include/opencv2
LIBS+=/home/icon/Qt/opencv/opencv-3.4.3/build/lib/*.so
2,代码测试
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat a = imread("/home/icon/图片/1.jpeg");
namedWindow( "Display Image", CV_WINDOW_AUTOSIZE );
imshow("Display Image",a);
cout << a.size();
waitKey(0);
}