//
void PictureBlackWhite(Uint32 memaddr)
{
Uint32 i=0,x,y,j,tmp;
Uint8 yh,yl,cr,cb;
for(i=0;i<172800;i++)
{
tmp=*(int*)memaddr;
//下面变成黑白
yh=( (tmp>>24)&0xFF );
if(yh>0x80)yh=0xff;
else yh=0;
yl=( (tmp>>8)&0xFF );
if(yl>0x80)yl=0xff;
else yl=0;
cr=0x80;//(tmp>>16)&0xFF;//
cb=0x80;//tmp&0xFF;//
tmp=(yh<<24)|(cr<<16)|(yl<<8)|cb;
*(int*)(memaddr)=tmp;
memaddr=memaddr+4;
}
上面是源代码,我修改后可以生成.out文件,但是不能达到二值化的效果,这是我修改的程序
void PictureBlackWhite(Uint32 memaddr)
{
Uint32 i=0,x,y,j,tmp[172800];
Uint8 yh,yl,cr,cb;
for(i=0;i<172800;i++)
{ tmp[i]=0;
tmp[i]=*(int*)memaddr;
//下面变成黑白
yh=( (tmp[i]>>24)&0xFF );
if(yh>0x80)yh=0xff;
else yh=0;
yl=( (tmp[i]>>8)&0xFF );
if(yl>0x80)yl=0xff;
else yl=0;
cr=0x80;//(tmp>>16)&0xFF;//
cb=0x80;//tmp&0xFF;//
tmp[i]=(yh<<24)|(cr<<16)|(yl<<8)|cb;
*(int*)(memaddr)=tmp[i];
memaddr=memaddr+4;
}
希望各位前辈能够指出原因,我学dsp时间不长,不到一个月,有很多东西不懂,我就是想让tmp这个值转换成数组tmp[i],这样我在后期处理图像时能够方便的对图像进行处理 |