Как определить контуры, которые не отделены друг от друга напрямую?

Пожалуйста, может кто-нибудь объяснить, как определить квадратную форму контуров, которые не совсем разделены друг от друга. Например, мне нужно определить количество квадратов на изображении ниже и координаты x, y их краев. Я пытаюсь пройти через этот вопрос, но он мне не помог.

введите здесь описание изображения

Поэтому, пожалуйста, кто-нибудь может объяснить это на простом примере кода.

Это изображение, которое я могу сгенерировать, не могли бы вы объяснить, как идентифицировать вышеуказанные квадраты на этом изображении.

введите здесь описание изображения

Поэтому, пожалуйста, будьте любезны объяснить это.


person NadLnk    schedule 11.08.2012    source источник


Ответы (1)


Вы должны использовать тот факт, что красный компонент каждого квадрата равен 255, и сделать порог. Вот что я сделал:

  1. Выполните сегментацию красным цветом: введите здесь описание изображения

  2. Сделайте расширение (чтобы удалить отверстия): введите здесь описание изображения

  3. (Необязательно) Проверьте, является ли каждый контур квадратом.

Код:

Mat src = imread("input.png"), red;
extractChannel(src, red, 2);

threshold(red, red, 254, 255, THRESH_BINARY);

Mat element = getStructuringElement(MORPH_RECT, Size( 2, 2 ), Point( 1, 1 ));
dilate(red, red, element);
person ArtemStorozhuk    schedule 11.08.2012
comment
Hay Большое спасибо за быстрый ответ. Не могли бы вы сказать мне, имеют ли эти квадраты тот же цвет, что и другие линии, как я могу извлечь эти квадраты? Пожалуйста, будьте любезны объяснить это. - person NadLnk; 12.08.2012
comment
Я не понимаю вашего вопроса. - person ArtemStorozhuk; 12.08.2012
comment
Я имею в виду, если все изображение имеет только черные линии, как я могу идентифицировать эти квадраты? - person NadLnk; 12.08.2012
comment
Линии не квадраты. О чем ты говоришь? - person ArtemStorozhuk; 12.08.2012
comment
Я обновил вопрос, загрузив в него образец изображения. Как я могу идентифицировать эти квадраты на таком изображении? - person NadLnk; 13.08.2012
comment
@NadLnk, если вы приняли мой ответ, то на ваш вопрос уже дан ответ. Задайте новый вопрос, и я помогу вам. - person ArtemStorozhuk; 13.08.2012
comment
@Astor Я задал это как отдельный вопрос, не могли бы вы дать какое-то решение и для этого. -are-having-same-color-using-opencv-or-javacv" title="определить контуры на изображении, которые имеют одинаковый цвет, используя opencv или javacv"> stackoverflow.com/questions/12088176/ Спасибо. - person NadLnk; 23.08.2012