2013-04-24 51 views
-1

我是一名初学者,我正在学习如何编写过滤器。 我已经尝试了一遍又一遍,但还没有得到它的工作。 任何人都可以帮我找到我的代码有什么问题吗?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; 
} 
+3

“没有工作”是一个足够的问题描述。 – 2013-04-24 23:21:30

回答

1

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

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

但你把它当作灰度(1个通道):

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

你可以将图像加载为灰度:

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

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

+0

感谢您的回答。但它没有奏效。 – 2013-04-25 01:46:50

+0

这只是你的代码:) – karlphillip 2013-04-25 02:14:18

+0

有一些我不明白的东西。当“new_image.at (30,40)= image.at (30,40);”是好的,但“new_image .at (30,40)= image.at (30,40);将是错误“。你能告诉我为什么吗? – 2013-04-25 02:52:18