打印

关于图像二值化的问题请教

[复制链接]
1912|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
261845460|  楼主 | 2013-3-23 16:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//
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],这样我在后期处理图像时能够方便的对图像进行处理

相关帖子

沙发
jkeqiang| | 2013-3-23 17:55 | 只看该作者
tmp【】弄个全局变量试试

使用特权

评论回复
板凳
261845460|  楼主 | 2013-3-23 19:09 | 只看该作者
jkeqiang 发表于 2013-3-23 17:55
tmp【】弄个全局变量试试

试过了,我是这样定义的,tmp=[172800]={0}  编译就报错
error: can't allocate .far, size 000a9004 (page 0) in IRAM (avail:
            0001fa00)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

17

帖子

0

粉丝