更改图像上相似像素之间的像素

时间:2014-03-21 02:25:42

标签: c++ algorithm opencv

我想在两个相似像素之间平均像素颜色。黑色像素之间的白色像素应变为黑色,反之亦然。此规则必须适用于所有方向。这是应该发生的事情的完整示例:

Horizontal:
□■□ -> □□□

Vertical:
□   ->  □
■   ->  □
□   ->  □

■□■ -> ■■■


■   ->  ■
□   ->  ■
■   ->  ■


□■□  ->   □□□   ->   □□□
■■■  ->   ■■■   ->   ■□■
■□■  ->   ■□■   ->   ■□■

OpenCV可以这样做吗?任何人都可以这样做algorighm吗?这就是我试过的:

while(i<image->width){
    while(j<image->height){
        if(pixel[i,j-1] == pixel[i,j+1]){
            pixel[i,j] = pixel[i,j-1];
        }else if(pixel[i-1,j] == pixel[i+1,j]){
            pixel[i,j] = pixel[i-1,j];
        }
        j++;
    }
    i++;
}

1 个答案:

答案 0 :(得分:0)

您没有正确访问图像像素。

对于灰度图像(在您的示例中为Mat pixel),要访问其像素,您应该使用:

pixel.at<uchar>(j, i) = ...;