求助关于DM642编程的问题

2019-03-26 15:56发布

    各位大神,我现在在做一个基于DM642的运动目标检测算法,板子是自己教研室画的,和VPMdm642基本一样,可以使用那套一起对应的例程,例程是SEED-VPM642图像实验源码。选择其中一个作为我要做的工程的框架,其中大部分内容不用修改,只需修改main()函数下的函数处理部分就好,现在发现实验源码有一个问题:
一下是一段函数代码,这段代码的意思是图像灰度拉伸。
void grayStretch(float fA, float fB, float fC)
{
        int i,j,intTemp;
        //方框内奇数行
        for(i=intALines;i<intDLines;i++)
        {
            for(j=intAPixels;j<intDPixels;j++)
            {               
            intTemp = *(Uint8 *)(tempYbuffer + i*numPixels + j);
            
            if(intTemp<intX1)
                    *(Uint8 *)(tempYbuffer + i*numPixels + j) = intTemp*(intY1/fA);
            else if((intTemp>=intX1)&&(intTemp<=intX2))        
                *(Uint8 *)(tempYbuffer + i*numPixels + j) = ((intY2-intY1)/fB)*(intTemp-intX1)+intY1;
            else
                    *(Uint8 *)(tempYbuffer + i*numPixels + j) = ((255-intY2)/fC)*(intTemp-intX2)+intY2;                        
                }         
        }
        
        //方框内偶数行
        for(i=numLines/2+intALines;i<numLines/2+intDLines;i++)
        {
            for(j=intAPixels;j<intDPixels;j++)
            {               
            intTemp = *(Uint8 *)(tempYbuffer + i*numPixels + j);
            
            if(intTemp<intX1)
                    *(Uint8 *)(tempYbuffer + i*numPixels + j) = intTemp*(intY1/fA);
            else if((intTemp>=intX1)&&(intTemp<=intX2))        
                *(Uint8 *)(tempYbuffer + i*numPixels + j) = ((intY2-intY1)/fB)*(intTemp-intX1)+intY1;
            else
                    *(Uint8 *)(tempYbuffer + i*numPixels + j) = ((255-intY2)/fC)*(intTemp-intX2)+intY2;                        
                }         
        }               
}
    看完这段代码我们知道数据是分奇偶行处理的,但最近我发现,如果将其中奇数行的处理部分注释掉,出来的结果和奇偶行同时处理的结果一样,而当把偶数行注释掉,出来的结果是原图像,也就是奇数行的处理并没有显示出来。查了好多资料也不知道什么原因。
    哪位大神知道怎么回事?请帮帮忙 此帖出自小平头技术问答
0条回答

一周热门 更多>