OpenCV Использование al oop для суммирования части ошибки вашего изображения? - PullRequest
0 голосов
/ 18 марта 2020

Я хочу пройтись по изображению и взять сетку 5x5 с центром вокруг каждого пикселя на изображении. Затем я хочу суммировать эту сетку и сравнить ее с порогом.

int main()
{
    Mat element = getStructuringElement(MORPH_RECT, Size(7, 7));

    Mat im = imread("blob.png", IMREAD_GRAYSCALE);
    bool fromCenter = false;
    namedWindow("Crop frame", WINDOW_NORMAL);
    Rect2d r = selectROI("Crop frame", im, fromCenter);
    im = im(r);
    erode(im, im, element);
    Mat clone = im;

    int sectionSize = 4;
    int width = im.cols - sectionSize/2;
    int height = im.rows - sectionSize/2;
    int sum = 0;
    int counter = 0;

    for (int i = sectionSize/2; i < width; i++) {
        for (int j = sectionSize/2; j < height; j++) {

            Rect rect = Rect(i, j, sectionSize, sectionSize);
            rect -= Point(rect.width / 2, rect.height / 2);
            Mat temp = im(rect);

            for (int x = 0; x < temp.cols; x++) {
                for (int y = 0; y < temp.rows; y++) {
                    int pixelValue = (int)temp.at<uchar>(y, x);
                    sum += pixelValue;
                }
            }

            cout << sum << endl;

            if (sum > 3800) {
                clone.at<uchar>(j, i) = 255;
            }
            else {
                clone.at<uchar>(j, i) = 0;
            }

            namedWindow("erode", WINDOW_NORMAL);
            imshow("erode", clone);
            waitKey(1);
            sum = 0;

        }
    }
}

Я получаю флуктуации в сумме пикселей в зависимости от того, где я выбираю свою область интереса на изображении, даже если оба изображения находятся в пустом пространстве. Кроме того, сумма моего пикселя изменяется, когда я изменяю значение пикселя клона в этот раздел кода, который я вообще не понимаю:

if (sum > 3800) {
                clone.at<uchar>(j, i) = 255;
            }
            else {
                clone.at<uchar>(j, i) = 0;
            }
...