前不久开始学习DM642,今天在看例程VideoReverse时,有处小小的疑惑。
如下是取反函数:
void ICETEKDM642PCIImageProcessReverse()
{
int i;
unsigned int *y;
for ( i=0,y=(unsigned int *)nMemTemp;i<180;i++,y++ )
(*y)=~(*y);
}
因为取反只要把每个像素的Y分量单独取反即可实现,原理十分简单。而开发板默认显示视频大小为720×576,4:2:2编码。那么一行应该还是720个Y分量,这边怎么是180?
原来这里nMemTemp被类型强制转换为 unsigned int型(4字节),而定义的nMemTemp是unsigned char型。这么改了试试:
void ICETEKDM642PCIImageProcessReverse()
{
int i;
unsigned char*y;
for ( i=0,y=nMemTemp;i<720;i++,y++ )
(*y)=~(*y);
}
重新编译链接下载运行,发现一样实现了图像灰度的取反。
看来对数据类型的掌握还不够。