关于“socket通信接收图像数据并显示”的编程总结

背景:上位机通过千兆以太网接收图像数据并实时处理、显示,图像数据接收采用socket编程,图像数据处理、显示采用opencv,并采用双线程编程,一条线程接收数据,一条线程处理、显示图像。

编程过程中,通过调试总结如下:

1、socket通信接收图像数据很快,根据测试:两台 PC机之间通过网线互连,socket通信采用TCP协议传输一帧图像(800*600单字节图像),耗时 0~15ms(大部分帧测试,一帧图像传输时间为0ms,即小于1ms);  PC机与PowerPC P2010之间传输一帧图像(800*600单字节图像),耗时 0~20ms;  计时函数采用 timeGetTime()函数,最小测试时间单位为ms。

2、多线程编程刚开始时,处理一帧图像,线程间的数据同步很耗时,占用了9s ~15s(单位:秒)之久的时间,不知道是不是测试错了;而采用单线程接收数据后,再处理显示,则第一帧耗时时间正常。

3、上位机采用单线程或双线程,处理一帧图像的耗时时间差不多,均在15~18ms(处理包括:传输接收数据、字符信息叠加,图像显示),这说明本方案根本不需要采用双线程编程,双线程编程应该用在什么样的情况下,需要注意,这里双线程并没有提高程序效率。

4、处理一帧图像的耗时时间为:15~18ms,测试发现,其中opencv的 imshow()函数显示一帧图像耗时 15ms,其他程序耗时为1ms以下,处理一帧图像的时间几乎都消耗在显示函数上。(可能是waitkey造成的,而不是在imshow那里,waitkey(1)实际的延时时间可能会达到10~20ms。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值