基于GigE_Vision协议接收相机发送的数据包显示的图像中出现固定位置黑线的解决

来源:互联网 发布:opencv python 安装 编辑:程序博客网 时间:2024/05/18 02:27

问题描述:通过Stream Channel接收GVSP Image 数据包并显示图像,利用一个线程一直接收GVSP包,并将收到到的Image数据包利用packetid放入缓冲区Buffer中,

收齐数据报之后利用Buffer来显示图像。结果显示的图像在固定位置出现一条前半部分黑后半部分灰白的线。

将图像放大观察,可发现,有右半部分接连左半部分的一条线,与真实图像不符合。

问题分析:黑线区域为(1704,1780)-(2447,1780)(0,1781)-(527,1781),总像素数为(2447-1704+1)+(527-0+1)= 1272,调试发现为最后一个Image Data Packet的数据部分大小,之前的Image数据包大小相等均为1500(Stream_Channel_Packet_Size),数据部分均为1464。于是找出问题所在,最后一个数据包放入Buffer中的偏移offset出错。于是将代码进行修改:

 offset = (packetid-1)*(len-8);
 memmove(Buffer+offset,buf+8,len-8);

修改为:

 //UDP头8字节,IP头20字节,则标准len为Stream_Channel_Packet_Size-28if(len == Stream_Channel_Packet_Size-28){         offset = (packetid-1)*(len-8);}else{ offset = (packetid-1)*(Stream_Channel_Packet_Size-28-8);} memmove(theApp.buffer+offset,buf+8,len-8);
问题得到解决。


0 0