【ubuntu18+QT12+OpenCV4环境配置】

ubuntu18+QT12+OpenCV4环境配置

前些天编译了最新版本opencv4,但是电脑内还有个opencv3.2,有时候二者共享链接库文件即libopencv*.so.XX,之类的路径没有配好的话,即使是使用简单的imread()函数,在QT中也会出现错误:

mainwindow.cpp:33: error: undefined reference to `cv::imread(cv::String const&, int)'

mainwindow.cpp:36: error: ‘CV_BGR2RGB’ was not declared in this scope
     cvtColor(src,src,CV_BGR2RGB);
                      ^~~~~~~~~~

另外在opencv4中cvtColor()函数第三个参数有点变化:

COLOR_RGB2GRAY取代了CV_RGB2GRAY,以此类推其他色彩空间。

【ubuntu18+QT12+OpenCV4环境配置】_第1张图片

磨刀不误砍柴工。所以有必要再把Ubuntu 电脑内的opencv环境变量配置再弄清楚。

首先检查main.cpp查看头文件是否有问题,一般情况下出现上面两种错误,说明Qt中opencv的环境变量位置不正确。

即通过修改.pro文件:

.pro文件末行添加如下路径:

INCLUDEPATH += /usr/local/include \
               /usr/local/include/opencv4 \
               /usr/local/include/opencv4/opencv2

LIBS += /usr/local/lib/libopencv*

稍微说明一下上面的路径:

INCLUDEPATH 为自己为Ubuntu电脑所编译的opencv的头文件目录(也可称为include目录)

LIBS 为Ubuntu电脑内opencv的共享链接库(.so.4.1即版本号),在windows中被称为动态链接库(即.dll文件也是带有版本号的)。

Ubuntu中opencv的共享链接库为(我编译的是4.1版本因此为):

libopencv_xphoto.so.4.1

libopencv_xfeatures2d.so.4.1等等(许多图像处理可用到的库我就不一一列举)

因此可以在QT中LIBS += /usr/local/lib/libopencv* 设置*通配符即可,而不用一一都给写上(PS:如果不嫌麻烦也可都写上,效果一样)

重点来了:

1.如何确定自己的共享链接库位置以及版本?

ubutnu终端中输入:

ldconfig -p |grep opencv

【ubuntu18+QT12+OpenCV4环境配置】_第2张图片

默认情况下编译opencv4等其他版本如果没有修改CMAKE_PREFIX_PATH中的路径。则都会存在/usr/local/lib目录下。

于是lib库目录就为:LIBS += /usr/local/lib/libopencv*

usr即(Unix system resources)下。(/usr/lib下也有一个opencv3.2版本,这个貌似是之前用的其他的一些程序安装的。)

注意:如果结果没有自己想要的opencv版本,此时需要查看一下系统环境变量中共享链接库搜索位置了!!!

终端执行:

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

 将/usr/local/lib ,/usr/lib编辑写入。ESC 后wq保存退出即可。

/usr/lib/x86_64-linux-gnu/(这条可以不加,因为我的低版本opencv的lib在这里)

【ubuntu18+QT12+OpenCV4环境配置】_第3张图片

2.如何确定ubuntu下想用的OpenCV版本Inlcude路径?

在比较新的opencv版本中一般只包括一个头文件#include就能实现大多数功能。这是因为在新的版本中一些core等模块的头文件都给统一进去了。

因此,如何给QT配置正确的头文件路径呢?

Ubuntu终端依次打开::

sudo vi /etc/ld.so.conf

编辑后保存。

将自己编译的opencv4头文件路径添加进去。

include /usr/local/include

include /usr/local/include/opencv4

include /usr/local/include/opencv4/opencv2

【ubuntu18+QT12+OpenCV4环境配置】_第4张图片

更新并保存配置:

sudo ldconfig

注意:如果找不到/usr/local路径,就要去看一下路径在不在环境变量内:没有的话添加如下图内容即可。

sudo vi /etc/bash.bashrc

以上两个步骤即完成了Opencv4配置工作。下面回到QT中实践。

3.QT5.12+Opencv4实践

1.打开QT Creator,新建一个项目名为test,选择Qt Consle Applacation后面一直确定默认就行了,注意一下项目路径。

2.test.pro文件:添加下面内容:
 

INCLUDEPATH+=/usr/local/include \
            /usr/local/include/opencv4 \
            /usr/local/include/opencv4/opencv2

LIBS += /usr/local/lib/libopencv*

3.源程序main.cpp中实现一个打开图片功能:(这里路径注意双斜杠,我的单斜杠总是报错。。)

#include 
#include
using namespace cv;

int main(int argc, char *argv[])
{
    Mat src;
    src=imread("//home//ziyuan//Documents//Tracking//2B_1.jpg");
    namedWindow("src",0);
    imshow("src",src);
    waitKey(0);
    return 0;
}

结果会打开一个控制台程序窗口和一个图片显示窗口:

【ubuntu18+QT12+OpenCV4环境配置】_第5张图片

完毕,可以开始其他内容。

你可能感兴趣的:(QT界面)