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

«Не работает» - это _never_ достаточное описание проблемы. –

ответ

1

Вы читаете изображение, как если бы она была окрашена (3 канала):

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

но вы лечите его как оттенки серого (1 канал):

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

Вы можете загрузите изображение в оттенках серого с помощью:

По всем другим вопросам, которые вы получите после прочтения этого ответа, воспользуйтесь полем поиска , так как эта тема была освещена много раз в этом форуме.

+0

Спасибо за ваш ответ. Но это не сработало. –

+0

Это был только один из проблем с вашим кодом :) – karlphillip

+0

Есть что-то, чего я не понимаю. «New_image.at (30,40) = image.at (30,40);» нормально, но «new_image .at (30,40) = image.at (30,40), будет ошибкой ". Не могли бы вы рассказать мне, почему? –

Смежные вопросы