-1

私は初心者で、フィルターの書き方を学んでいます。何度も何度も試しましたが、うまくいきませんでした。私のコードの何が問題なのかを誰かが見つけてくれますか?

double alpha;
int beta; 

int main( int argc, char** argv )
{

    Mat image = imread("test.png",1 );
    Mat new_image = Mat::zeros( image.size(), image.type() );

    for( int y = 0; y < image.rows; y++ )
    { 
        for( int x = 0; x < image.cols; x++ )
        {
            for( int ll = -1; ll < 1; ll++ )
            {
                for(int mm=-1; mm<1; mm++)
                {
                    uchar ff1 = image.at<uchar>(x+ll,y+mm);
                    new_image.at<uchar>(x,y) +=ff1;
                }  
            }
        }
    }

    namedWindow("Original Image", 1);
    namedWindow("New Image", 1);

    imshow("Original Image", image);
    imshow("New Image", new_image);

    waitKey();
    return 0;
}
4

1 に答える 1

1

画像が色付けされているかのように読み取っています (3 チャネル):

Mat image = imread("test.png",1 );

しかし、あなたはそれをグレースケール(1チャンネル)として扱っています:

uchar ff1 = image.at<uchar>(x+ll,y+mm);

次のようにして、画像をグレースケールとしてロードできます。

Mat image = imread("test.png",0 );

このトピックはこのフォーラムで何度も取り上げられているため、この回答を読んだ後に発生する他のすべての質問については、検索ボックスを使用してください。

于 2013-04-25T00:13:06.260 に答える