DM642学习点滴一:对例程VideoReverse的一点小思考

前不久开始学习DM642,今天在看例程VideoReverse时,有处小小的疑惑。

如下是取反函数:

void ICETEKDM642PCIImageProcessReverse()
{
    int i;
    unsigned int *y;
    
    for ( i=0,y=(unsigned int *)nMemTemp;i<180;i++,y++ )
    	(*y)=~(*y);
}

因为取反只要把每个像素的Y分量单独取反即可实现,原理十分简单。而开发板默认显示视频大小为720×5764:2:2编码。那么一行应该还是720Y分量,这边怎么是180

原来这里nMemTemp被类型强制转换为 unsigned int(4字节),而定义的nMemTempunsigned char型。这么改了试试:

void ICETEKDM642PCIImageProcessReverse()
{
    int i;
    unsigned char*y;
    
    for ( i=0,y=nMemTemp;i<720;i++,y++ )
    	(*y)=~(*y);
}


重新编译链接下载运行,发现一样实现了图像灰度的取反。

看来对数据类型的掌握还不够。

你可能感兴趣的:(DM642学习点滴一:对例程VideoReverse的一点小思考)