0
我想模糊圖像。只在某些部分不是全部圖像模糊
我使用了一個名爲k[][3]= { 1, .01, 1, .01, 0, .01, 1, .01, 1};
代碼內核如下:
void blur(IplImage *notgray)
{
IplImage *img = cvCreateImage(cvGetSize(notgray), notgray->depth, 1);
cvCvtColor(notgray, img, CV_RGB2GRAY);
int rows=img->height,cols=img->width,row,col,i,j,ki,kj;
uchar* temp_ptr=0 ;
float sum,k[][3]= { 1, .01, 1,
.01, 0, .01,
1, .01, 1};
for(row = 0; row < rows; ++row)
{
sum=0;
for (col = 0; col < cols; ++col)
{
temp_ptr = &((uchar*)(img->imageData + (img->widthStep*row)))[col];
for(j=-1,ki=0; j<=1;j++,ki++)
{
for(i=-1,kj=0; i<=1;i++,kj++)
{
int x2=col+i;
int y2=row+j;
if (x2>=0 && x2<img->width && y2>=0 && y2<img->height)
{
sum=sum+k[ki][kj];
if (sum<0) sum=0; else if (sum>255) sum=255;
temp_ptr[0] =(uchar) sum;
}
}
}
}
}
}
我所知道的輸出實際上取決於我的算法,但看代碼和輸出我會要求一些指導我應該進一步解決我的問題。
我應該在哪裏放置它? –
再向下兩行。看着它,我現在看到「temp_ptr [0] =(uchar)sum;」出於性能原因,應該真的下降四行。 –
這並沒有改變我的形象.. –