这是一个外行人试图模糊图像,我没有使用任何特定的[已知]算法,我正在实施我自己的技术。
float k[][5]= { .01, .01, .01, .01, .01,
.01, .01, .01, .01, .01,
.01, .01, .01, .01, .01};
for( row = 0; row < rows; ++row)
{
sum=0;
for ( col = 0; col < cols; ++col)
{
temp_ptr = &((uchar*)(img->imageData + (img->widthStep*row)))[col];
for( i=1; i<6;i++)
{
float factor=exp((float)(-(i-col)*(i-col)/(2*sigma2)));
sum+=factor;
for( j=1; j<6 ;j++)
{
if( (row-j)>0 && (col-i)>0 )
k[i-1][j-1]+=factor*temp_ptr[row-i+col-j];
}
for( j=1; j<6 ;j++)
{
if( (row-j)>0 && (col-i)>0 )
{
uchar* temp_ptr1 = &((uchar*)(img->imageData + (img->widthStep * (row-1) )))[col-1];
temp_ptr1[0]=temp_ptr[0]*k[i-1][j-1]/sum;
temp_ptr1[1]=temp_ptr[1]*k[i-1][j-1]/sum;
temp_ptr1[2]=temp_ptr[2]*k[i-1][j-1]/sum;
}
}
}
}
}
答案 0 :(得分:1)
您的j
索引超出了数组k
的范围。
它不能大于5!
在第5个for
中,您应该将上限更改为5
而不是6
。
答案 1 :(得分:0)
k
只有三行,但您在第一个内部j
for
循环中访问了不存在的第4行和第5行。在您访问这些行之后,您的所有其他程序都会关闭所有投注。
答案 2 :(得分:0)
我不知道,但代码非常容易出错。使用C ++接口到OpenCV。