Bootstrap

树莓派学习笔记4-opencv网络图传-1

前记

为了实现QT编写的上位机显示下位机树莓派的opencv实时画面,因此需要进行opencv的网络图传,包括以下内容
1、QT编写TCP服务端并配置opencv显示摄像头画面
2、python网络编程客户端发送opencv画面到服务端
因此首先进行QT的opencv环境部署

前期准备

本人尝试了多个版本的opencv,最后得出经验为:请使用合适的版本,这个问题很关键!
opencv:3.4.3
QT:5.14.2
cMake:3.8(这个比较随意)
下载链接不再给出,到官网下载即可
将opencv源码准备到一个文件夹
新建一个文件夹用于存放编译后的代码
编译cMake
首先需要配置如下环境变量
在这里插入图片描述
下面开始对opencv源码进行更正(鬼知道特么为什么有错)
1、打开3rdparty\protobuf\src\google\protobuf\stubs\io_win32.cc文件将“nullptr”改为“NULL”**

2、打开modules\photo\test\test_hdr.cpp文件
增加头文件 “#include ”和“#include ”
至此搞定一部分
下面开始痛苦之旅
其后,打开cMake,选择opencv源码路径,选择先前用于存放作用的文件夹
在这里插入图片描述
点击Configure
选择MinGw Makefile
选择Speciy native。。。。
在这里插入图片描述
下一步选择gcc和g++的路径,位于QT安装目录下的Toos中的mingw32_64的bin文件中
在这里插入图片描述
再次点击Configure
正常情况开始报红
找到CMAKE_MAKE_PROGRAM,选择路径为QT的编译器,位于gcc相同路径
在这里插入图片描述
随后再次点击Configure
等待一段时间后更红了
草!
在这里插入图片描述

确保勾选:WITH_OPENGL、WITH_QT、ENABLE_CXX11
取消勾选:WITH_MSMF、WITH_IPP、ENABLE_PRECOMPILED_HEADERS
重点
由于cMake编译需要下载一些dll等文件,网络问题影响较大,本人尝试WIFI并不友好(路由器的WIFI进外网老是不得劲),因此推荐使用手机热点
再度点击Configure,正常来说没有红色报错了
在这里插入图片描述
碰到以上问题(服务器连接不上或者什么下载失败之类的),多半是网络问题,换网多来几次估计就好了
Configure正常以后一般Gnerate也没问题,出现如下画面及成功
在这里插入图片描述

难的在这里

下面使用管理员权限打开CMD,cd到刚刚配置的路径下,使用如下命令开始编译

mingw32-make
mingw32-make -j8	//嫌上面慢的可以用这个,就是笔记本风扇转的有点吓人

随后开始一大串吓人的进程
在这里插入图片描述
但凡不是欧皇,第一次基本不可能成功,大家不要气馁,失败就是用来给我们增长经验的,下面是修改技巧
查看出错前控制台正在执行的步骤,赋值度娘寻找前辈们的方案(但是别轻易修改源码),一般通过修改cMake的配置进行更正,由于本人经历太多错误,无法一一记录,所以不做列举。
随后,碰到突然报错,然后调几百行出来的别急,首先查看错误信息(主要看文件路径),寻找无关的文件(比如python的可执行文件路径啥的),在cMake中进行去除,随后如果碰到某条文件卡死,尝试对cMake进行去除勾选,因为不是每个板块都是有用必须的,大胆尝试即可。

随后,看到如下画面恭喜你
在这里插入图片描述
make成功后继续执行以下指令,一般make没问题那么这一步也不会有问题

mingw32-make install

QT的部署

添加下面代码到QT的pro文件中,注意修改路径

INCLUDEPATH += C:\Users\Lenovo\Desktop\ce\install\include
LIBS += C:\Users\Lenovo\Desktop\ce\lib\libopencv_*.a

先添加头文件#include <opencv2/opencv.hpp>
再在cpp文件中添加如下代码,注意修改图片路径(图片不要有中文!!!)

    cv::Mat image=cv::imread("C:/Users/Lenovo/Desktop/pc/ce.jpg",1);
    cv::namedWindow( "Display window", CV_WINDOW_AUTOSIZE );
    cv::imshow( "Display window", image );

最后成功运行。
在这里插入图片描述
在这里插入图片描述

;