QT中用socket接收图像数据(JPEG)后立即解码显示
来源:互联网 发布:linux怎么无法退出vim 编辑:程序博客网 时间:2024/06/05 02:18
最近在做一个小程序,功能很简单,就是从socket传回jpeg格式的数据,然后在本机上显示出来,当然这个过程并没有保存收到的数据后再显示,而是收到数据后马上显示。
这里采用了OPENCV中的解码函数:
imdecode();
这个函数的用法比较烦,但也不复杂,如下:
这是一个接收socket信号的函数(中间还有一个自定义的信号,这个不是重点)
<pre name="code" class="cpp">void MainWindow::readDate(QByteArray datagram)//这个datagram中从信号传过来的参数,这就是一个包的数据,用的是UDP通信{ QString str; std::string image; static int udp_cnt = 0;//包记数 static int udp_all = 0; image.assign(datagram.data()+10, datagram.data()+datagram.size()); if (0 == datagram.at(1)) { udp_all = datagram.at(0); udp_cnt = 0; imageBuf.clear(); } if (udp_all == datagram.at(0) && udp_cnt == datagram.at(1))//同一包 { str.sprintf("%d %d",udp_all, udp_cnt); imageBuf = imageBuf + image; ++udp_cnt; if (udp_cnt >= udp_all)//组装完成 { std::vector<char> vecImage(imageBuf.begin(), imageBuf.end()); srcImg = imdecode(Mat(vecImage), CV_LOAD_IMAGE_COLOR);//这个函数要一个vector的参数,所以上面把整个图像数据组合后放到vector中,由函数解码 cvtColor(srcImg, srcImg, CV_BGR2RGB); //,解码完后,直接显示!!OPENCV是BGR格式的,QT是RGB,所以转换一下 imshow("adf",srcImg); waitKey(33); this->update(); } //组包 }// printf("\ndata0:%d\n",datagram.at(0));// printf("data1:%d\n",datagram.at(1));// printf("data.size:%d",datagram.size());}
0 0
- QT中用socket接收图像数据(JPEG)后立即解码显示
- 阻塞socket 立即接收
- JPEG图像编解码
- JPEG图像编码解码
- libjpeg库解码jpeg图像输出数据排列问题
- CUDA 实现JPEG图像解码为RGB数据
- linux qt中用Qlabel显示图像
- Qt中用QLabel显示OpenCV中Mat图像数据出现扭曲现象的解决
- 显示JPEG图像
- QT中显示图像数据
- QT中显示图像数据
- Tiny Jpeg Decoder (JPEG解码程序) 源代码分析 2:解码数据
- qt 无法显示jpeg
- JPEG图形显示、图像数据的DB存取。
- 读取jpeg图像数据
- 【Qt开发】QT中显示图像数据
- jpeg图像的压缩编码与解码
- 使用libjpeg进行JPEG图像解码
- 读取.dex文件中的所有字符串
- android之java.lang.thread学习
- Android面试题目及其答案
- IOS 全局常量
- Leetcode: Binary Tree Right Side View
- QT中用socket接收图像数据(JPEG)后立即解码显示
- c++ Vector
- JAVA重载(overload)和覆盖(override)中你所不知道的陷阱
- 安卓开发经验分享:资源、UI、函数库、测试、构建一个都不能少
- Remove Element
- LeetCode78/90 subset I/II**
- 关于魅族手机adb连接不上的问题
- Android手机通讯录
- 第五周 项目二-对象作为数据成员