2012-03-18 5 views
1

Я новичок в OpenCV, поэтому извиняюсь, если использую неправильную терминологию. Я пишу программу на C, которая находит объекты в изображении (в данном случае красные строительные блоки) и извлекает эту часть изображения и отображает ее как новое изображение. Я создал изображение, чтобы удалить все, кроме красного, и использовать cvDilate, чтобы слегка размыть результаты, чтобы сделать объект более четким. Затем я использовал функции поиска и рисования OpenCV Contour для поиска и рисования блоков.Производите ограничительную рамку из контуров

Как я могу получить доступ к контурным местоположениям, хранящимся как CvSeq *, и принимать самые верхние и нижние значения контура из кластера контуров (все еще может быть некоторый шум от других красных объектов), так что я могу сделать ограничивающая рамка вокруг него?

Благодаря

ответ

0

На самом деле, вам не придется делать это вручную, так как OpenCV предоставляет этот тип функциональности для вас.

Посмотрите на cvMinAreaRect2 и cvBoundingRect. Вот их примеры соответственно: minarea.c (имеет некоторые отладочные материалы, но должен дать вам суть использования) и generalContours_demo1.cpp (на C++, но его нужно легко перевести).

В качестве побочного примечания я бы определенно предложил использовать C++ API OpenCV, поскольку его немного легче понять и имеет больше возможностей. Кроме того, вы тратите намного меньше времени/кода на беспокойство по поводу управления памятью, так как класс Mat обрабатывает это для вас.

Надеюсь, что это поможет!

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