Почему N = 11 в opencv squares.cpp

#c #opencv

#c #opencv

Вопрос:

Я проверяю OpenCV squares.cpp учебное пособие. Попробуйте использовать другую часть кода порогового уровня, используя «N», которая определяется как глобальная 11. Почему нам нужно, чтобы N определялось как 11? Есть ли значение для 11 для порогового значения?

 int thresh = 50, N = 11;
    // find squares in every color plane of the image
    for( int c = 0; c < 3; c   )
    {
        int ch[] = {c, 0};
        mixChannels(timg, gray0, ch, 1);
        for( int l = 0; l < N; l   )
        {
            if( l == 0 )
            {
                Canny(gray0, gray, 0, thresh, 5);
                dilate(gray, gray, UMat(), Point(-1,-1));
            }
            else
            {
                // apply threshold if l!=0:
                //     tgray(x,y) = gray(x,y) < (l 1)*255/N ? 255 : 0
                threshold(gray0, gray, (l 1)*255/N, 255, THRESH_BINARY);
            }
    }

 

Комментарии:

1. Пожалуйста, приложите образец изображения и еще немного кода!! (закройте, по крайней мере, «для»)

2. Потому что автор должен был выбрать какое-то число, и 11 было достаточно разумным (не слишком высоким, не слишком низким). Все, что он устанавливает, — это количество различных пороговых уровней (с равным интервалом в диапазоне 0-255), которые нужно попробовать.