linux下如何实现图片的连续发送,QT如何实现图片的连续接受显示

时间:2023-01-28 19:56:04
本人现在是大三的学生,刚接触linux网络编程和QT编程不久,因近期跟同学一起做一个比赛,就是视频监控。在开发板上移植LINUX系统,上位机界面用QT开发。考虑到实时性的问题,选用UDP协议进行网络传输,现在碰到这样的问题,在开发板上如何实现C语言网络编程进行图片的连续传输,在上位机上又如何实现图片的连续显示和保存。
谢谢各位的解答,如果可以的话能否给出尽量详尽的解释或者给出相关的函数或者类也行。


再次表示感谢!!

5 个解决方案

#1


发送嘛就创建一个线程不停的读设备,读到后就用 socket发送,最好传jpeg格式的。图片如果比较大,一个包应该发不守,上位机接收的时候要组包和拆包,判断jpeg的文件头和文件尾截成一个jpeg包,上位机显示就OK了

#2


引用 1 楼 lkppostt 的回复:
发送嘛就创建一个线程不停的读设备,读到后就用 socket发送,最好传jpeg格式的。图片如果比较大,一个包应该发不守,上位机接收的时候要组包和拆包,判断jpeg的文件头和文件尾截成一个jpeg包,上位机显示就OK了


谢谢你的答复,我再看一下,不知道UDP用于视频传输的可行性有多高!

#3


给点我的建议吧,记得给我分,我都没分提问了,谢谢!
1,图像采集:
先查看一下 linux 下的v4l(video for linux ,摄像头操作API,包括参数设置,图片捕获等等 ),从这步中你应该实现以下步骤:
    1)通过open()函数打开摄像头
    1)通过ioctl()函数设置摄像头参数
    2)通过read()函数从摄像头读取图片
2,网络传输
    网络传输采用tcp传输最为简单,如果想要实时性好,可以考虑一下用RTP。在传输前为每张图片加一个头(这个头就是所谓的自定义协议啦,其实就是一个自定义结构体,你可以在里面包含当前这张图片的大小等信息)
3,图像显示
 Qt显示图片相当简单,  先用QImage, Qpixmap,加载图片,再显示到 QLable控件中  
把单张图片显示放在 Qtcpsocket 的dataready 触发的槽函数里,即可实现图片的不停刷新,也就是视频了
4,图片保存
把接收到的所有数据全部保存在文件中,并在保存结束后加上文件大小等信息,回放的时候就可以实现进度条控制等操作了,

说的比较简略,真正实施起来还有很多事情要做,慢慢来吧,学习过程是最重要的

#4


感谢上楼的回复,再看看有没有其他的答案,24小时后结贴给分,嘿嘿

#5


请问,您实现了吗,有没有简单的例子,我做的也是,linux下发送图片,QT端显示接受图片,邮箱935892307@qq.com,在此多谢了!

#1


发送嘛就创建一个线程不停的读设备,读到后就用 socket发送,最好传jpeg格式的。图片如果比较大,一个包应该发不守,上位机接收的时候要组包和拆包,判断jpeg的文件头和文件尾截成一个jpeg包,上位机显示就OK了

#2


引用 1 楼 lkppostt 的回复:
发送嘛就创建一个线程不停的读设备,读到后就用 socket发送,最好传jpeg格式的。图片如果比较大,一个包应该发不守,上位机接收的时候要组包和拆包,判断jpeg的文件头和文件尾截成一个jpeg包,上位机显示就OK了


谢谢你的答复,我再看一下,不知道UDP用于视频传输的可行性有多高!

#3


给点我的建议吧,记得给我分,我都没分提问了,谢谢!
1,图像采集:
先查看一下 linux 下的v4l(video for linux ,摄像头操作API,包括参数设置,图片捕获等等 ),从这步中你应该实现以下步骤:
    1)通过open()函数打开摄像头
    1)通过ioctl()函数设置摄像头参数
    2)通过read()函数从摄像头读取图片
2,网络传输
    网络传输采用tcp传输最为简单,如果想要实时性好,可以考虑一下用RTP。在传输前为每张图片加一个头(这个头就是所谓的自定义协议啦,其实就是一个自定义结构体,你可以在里面包含当前这张图片的大小等信息)
3,图像显示
 Qt显示图片相当简单,  先用QImage, Qpixmap,加载图片,再显示到 QLable控件中  
把单张图片显示放在 Qtcpsocket 的dataready 触发的槽函数里,即可实现图片的不停刷新,也就是视频了
4,图片保存
把接收到的所有数据全部保存在文件中,并在保存结束后加上文件大小等信息,回放的时候就可以实现进度条控制等操作了,

说的比较简略,真正实施起来还有很多事情要做,慢慢来吧,学习过程是最重要的

#4


感谢上楼的回复,再看看有没有其他的答案,24小时后结贴给分,嘿嘿

#5


请问,您实现了吗,有没有简单的例子,我做的也是,linux下发送图片,QT端显示接受图片,邮箱935892307@qq.com,在此多谢了!