飞卡日常进度之鹰眼图像解压,转为二维数组
摄像头 采集回来的图像是,压缩图像,需要进行解压, 鹰眼图像解压,转为 二维数组。
(其实就是原来一个字节存8个像素点,现在解压把它膨胀成1个字节1个像素点。)
一维数组和二维数组,在内存存储上都是一样的!!!
图像的存储图:(分辨率60*80)
(每行采集80个像素点,共60行,即4800个像素点)(0在左上角,是远方左端)
假设 采集回来的图像地址是: img_bin_buff
(鹰眼是 8个像素一个字节)
想解压到: uint8 img_buf[H][W];
这个 二维数组里。(当然也可以是一维数组: uint8 img_buf[H*W];
)则需要调用这个函数:
img_extract((uint8 *)img_buf,(uint8 *) img_bin_buff, H*W/8);
//解压为灰度图像,方便发送到上位机显
img_buf
定义成二维数值时,与一维数组不同的是,这里的 img_buf
传递进去的时候多了强制类型转换 (uint8 *)
!
原理其实也很简单,理解了C语言的数组和指针的关系,这里也就不难理解!举个例子,一维数组a[]
和指针的a*
是一样的,同样二维数组的a[][]
和指针的a**
是一样的。
那么对应上面的强制转换也就不难理解了,可以猜到img_extract()
函数的参数也肯定是uint8
类型的。看一下这个函数的实现:
//压缩二值化图像解压(空间 换 时间 解压)
//srclen 是二值化图像的占用空间大小
void img_extract(uint8 *dst, uint8 *src, uint32 srclen)
{
uint8 colour[2] = {255, 0}; //0 和 1 分别对应的颜色
//注:山外的摄像头 0 表示 白色,1表示 黑色
uint8 tmpsrc;
while(srclen --)
{
tmpsrc = *src++;
*dst++ = colour[ (tmpsrc >> 7 ) & 0x01 ];
*dst++ = colour[ (tmpsrc >> 6 ) & 0x01 ];
*dst++ = colour[ (tmpsrc >> 5 ) & 0x01 ];
*dst++ = colour[ (tmpsrc >> 4 ) & 0x01 ];
*dst++ = colour[ (tmpsrc >> 3 ) & 0x01 ];
*dst++ = colour[ (tmpsrc >> 2 ) & 0x01 ];
*dst++ = colour[ (tmpsrc >> 1 ) & 0x01 ];
*dst++ = colour[ (tmpsrc >> 0 ) & 0x01 ];
}
}
所以总结一下两种用法,分别对应二维数组和一维数组!
二维数组的方法:
uint8 img_buf[H][W]; //二维数组
img_extract((u8 *)img_buf,(uint8 *) img_bin_buff, H*W/8);
//解压为灰度图像,方便发送到上位机显
一维数组的方法:(例程默认是这样)
uint8 img_buf[H*W]; //一维数组
img_extract(img_buf,(u8 *) img_bin_buff, H*W/8);
//解压为灰度图像,方便发送到上位机显
关于解压数组:
uint8 colour[2] = {255, 0}; //0 和 1 分别对应的颜色
//注:山外的摄像头 原始输出数据 0 表示 白色,1表示 黑色,解压后的数据由此数组的值决定
再补充说明:
一、解压前和解压后的对应关系
解压前,0 表示 白色,1表示 黑色;
解压后,由这个数组来定。上述的代码是:
colour[0]=255 ,即白色
colour[1]=0 ,即黑色
换句话说,上面的解压代码**,解压后,0表示黑色,255表示白色。** (之所以设置,是为了方便灰度显示)
二、解压某几行
假如需要解压指定的行,方法也是类似,也是用 img_extract
函数,但不是全部解压,而是仅解压指定的行。
①、假如需要解压 第 3行 (从第一行数起)
,图像本身 60行,80列
。
就压缩后的图像而言,一行 共 80/8 =10 个字节
。第 3 行,在压缩图像数组的偏移就是 (3-1)*10
那么:
img_extract(buff , img_bin_buff+(3-1)*10, 10);
把第3行,共10个字节,解压到 buff 数组上
如果需要解压指定多行呢? 用数组来存储要指定第几行咯,然后用变量来代替上面的 3 。
文章来源: recclay.blog.csdn.net,作者:ReCclay,版权归原作者所有,如需转载,请联系作者。
原文链接:recclay.blog.csdn.net/article/details/79525280
- 点赞
- 收藏
- 关注作者
评论(0)