2013-04-24 84 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