Алгоритм Собеля без библиотеки, вывод в оттенках серого - PullRequest
0 голосов
/ 16 марта 2020

Я пытаюсь получить этот вывод черно-белые плюсы и негативы и серые нейтралы

Но вместо этого я получаю только черно-белое

Я не уверен, что изменить в моем коде.

Mat sobelX(const cv::Mat &m){
    Mat im = m.clone();
    int gx, mag;

    for (int i = 0; i < m.rows; i++){
        for (int j = 0; j < m.cols; 
            //find x gradient
            gx = m.at<uchar>(i-1, j-1)
                + 2*m.at<uchar>(i, j-1)
                + m.at<uchar>(i+1, j-1)
                - m.at<uchar>(i-1, j+1)
                - 2*m.at<uchar>(i, j+1)
                - m.at<uchar>(i+1, j+1);

            mag = sqrt(gx*gx);

            if (mag < 0) {
                mag = 0;    //set to black
            }
            else if (mag > 255) {
                mag = 255;  //set to white
            }
            im.at<uchar>(i, j) = mag;
        }
    }
    return im;
}

Спасибо.

...