各位大神,我现在在做一个基于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;
}
}
}
看完这段代码我们知道数据是分奇偶行处理的,但最近我发现,如果将其中奇数行的处理部分注释掉,出来的结果和奇偶行同时处理的结果一样,而当把偶数行注释掉,出来的结果是原图像,也就是奇数行的处理并没有显示出来。查了好多资料也不知道什么原因。
哪位大神知道怎么回事?请帮帮忙
此帖出自
小平头技术问答
一周热门 更多>