21

Linux Qt配置opencv环境(一)

 4 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzUxMTk4MzY3MA%3D%3D&%3Bmid=2247484475&%3Bidx=1&%3Bsn=646cff3310710655189e30b90864b5b5
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

点击上方蓝字可直接关注!方便下次阅读。如果对你有帮助,麻烦点个在看或点个赞,感谢~

今天离职前和之前的好友聚了下餐,按照我的风格,如果有可以写的文章肯定是要写的。

另外说下,我对张志勇同志整体上是肯定的,虽然我经常怼(dui)他。

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

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

一、 编译器

dh@ubuntu:~$ gcc -v

.

Thread model: posix

gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12) 安装成功

各种软件包支持:

sudo apt-get install build-essential

二、 安装cmake工具

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

sudo apt install cmake

效果:

dh@ubuntu:~$ cmake -version

cmake version 3.5.1 安装成功

三、  安装依赖库

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进行测试)

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


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


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

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

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

五、 测试是否安装成功

第一种测试方法

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

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

g++ `pkg-config --cflags opencv` -o image image.cpp `pkg-config --libs opencv`

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

UBjyIf6.png!web

操作及效果如下:

QvERfmq.png!web

②使用 Qt 进行测试

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

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 链接方式报错如下:   ( 令人伤心 )

2qEr6bu.png!web

使用succes方式则如下:

bEnyEjy.png!web

让人无语......

Qt  主程序如下:

#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  中编译部分及程序运行时所需共享库的搜索路径

欢迎大家关注公众号:    Pou光明

MZzeIjR.png!web

愿大家   拥有梦想,实现价值


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK