前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux Qt配置opencv环境(一)

Linux Qt配置opencv环境(一)

作者头像
用户5908113
发布2020-05-11 11:18:47
6.3K0
发布2020-05-11 11:18:47
举报
文章被收录于专栏:Pou光明

今天主体是Linux 环境下配置opencv环境,如有不妥的地方,恳请大家指正。根据网上的教程并结合自己的实际操作——总结如下:

平台环境:ubuntu 16.04 _x64、 Qt 5.10.1/gcc 5.3.1、 opencv 3.4.10

一、 编译器

代码语言:javascript
复制
dh@ubuntu:~$ gcc -v
.
Thread model: posix
gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12)            安装成功

各种软件包支持:

代码语言:javascript
复制
sudo apt-get install build-essential

二、 安装cmake工具

由于之前编写过makefile 文件,已经安装了cmake,命令如下(此处是非源码安装):

代码语言:javascript
复制
sudo apt install cmake
效果:
dh@ubuntu:~$ cmake -version
cmake version 3.5.1                安装成功

三、 安装依赖库

代码语言:javascript
复制
dh@ubuntu:~$ sudo apt-get install libgtk2.0-dev 
libavcodec-dev libavformat-dev libjpeg8-dev 
libjpeg-dev libtiff5-dev libswscale-dev libjasper-dev

具体哪些包能用上也不确定
dh@ubuntu:~$ sudo apt-get update

四、 安装opencv 库

官方网站:https://opencv.org/releases/

下载好压缩文件后,解压,进入opencv-3.4.10文件内:

cmake 指令 (注意,之后会用make -j4进行测试)

代码语言:javascript
复制
官方网站:https://opencv.org/releases/
下载好压缩文件后,解压,进入opencv-3.4.10文件内:
cmake 指令    (注意,之后会用make -j4进行测试)

经过漫长时间编译后,默认参数使得头文件在/usr/local/include下,分别是opencv和opencv2; 头文件是在/usr/local/lib下的libopencv_*

Make的过程还是有些耗时的。所以下次用多核试下

五、 测试是否安装成功

第一种测试方法

进入源码目录->进入sample目录->进入cpp目录下

①/home/dh/article/opencv/opencv-3.4.10/samples/cpp

代码语言:javascript
复制
g++ `pkg-config --cflags opencv` -o image image.cpp `pkg-config --libs opencv`

编译image.cpp文件,生成image目标文件

操作及效果如下:

②使用Qt 进行测试

使用之前文章 Qt一些模板 链接共享库的方式进行测试:

代码语言:javascript
复制
unix{
    contains(QT_ARCH, i386){

             }
    contains(QT_ARCH, x86_64){

    INCLUDEPATH += $$PWD/3rd/opencv/linux_x64/lib/inc
#    LIBS += -L$$PWD/3rd/opencv/linux_x64/lib -opencv_*           #faild
    LIBS +=   $$PWD/3rd/opencv/linux_x64/lib/libopencv_*         #success


    message(STATUS"********64********$$PWD/3rd/opencv/linux_x64/lib/inc")
    }

}else{
    contains(QT_ARCH, i386){
        #32bit  python
        LIBS += -L$$PWD/lib/python/ -lpython37
        INCLUDEPATH += $$PWD/lib/python/include
    }
    contains(QT_ARCH, x86_64){
        #64bit
        message(STATUS"********64********$$PWD/lib/python")
    }
}

使用faild 链接方式报错如下: (令人伤心)

使用succes方式则如下:

让人无语......

Qt 主程序如下:

代码语言:javascript
复制
#include <QCoreApplication>

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

using namespace cv;


int main(int argc, char *argv[])
{
    namedWindow( "src", WINDOW_AUTOSIZE );
    Mat src1 = imread( "/home/dh/article/opencv/QtTest/QtTestOpencv/imageData/lena.jpg" );
    while(1)
    {
        imshow( "src", src1 );
        char c =  waitKey(30);
        if( 27==c )
            return 0;
    }

    QCoreApplication a(argc, argv);
    return a.exec();
}

其中 27 是左上角的 esc 按键。

六、 小结

①关于源码编译部分其实是将源码变成了共享库及头文件

②Qt 中如何使用共享库及头文件

③Qt 中编译部分及程序运行时所需共享库的搜索路径

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Pou光明 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档