Opencv,请告诉我如何修复我的代码

时间:2013-04-24 23:20:08

标签: opencv

我是初学者,我正在学习如何编写过滤器。 我一次又一次地尝试过,但还没有开始工作。 任何人都可以帮我找到我的代码有什么问题吗?

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;
}

1 个答案:

答案 0 :(得分:1)

您正在阅读图像,就好像它是彩色的(3个通道):

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

但您将其视为灰度(1个频道):

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

您可以使用以下颜色将图像加载为灰度:

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

对于阅读此答案后您将遇到的所有其他问题,请使用搜索框,因为此论坛已多次涵盖此主题。