我是初学者,我正在学习如何编写过滤器。 我一次又一次地尝试过,但还没有开始工作。 任何人都可以帮我找到我的代码有什么问题吗?
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;
}
答案 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 );
对于阅读此答案后您将遇到的所有其他问题,请使用搜索框,因为此论坛已多次涵盖此主题。