2014-12-15 4 views
0

Мое требование - извлечь все контуры и координаты из изображения. В настоящее время я использую cvFindContours для поиска всех контуров, а затем итерации через каждый, используя «CV_GET_SEQ_ELEM»/«cvGetSeqElem», чтобы получить все координаты.Как отредактировать координаты с помощью OpenCV?

Теперь новое требование возникает, когда размер контуров должен быть на x пикселей меньше фактического.

E.g. Если найден кружок с радиусом 100 пикселей, то возвращаемые координаты должны быть на 97 (3 пикселя меньше) пикселей. Короче, любые контуры (любая форма), которые будут возвращены, будут иметь x пикселей меньше, чем фактический.

Есть ли какой-либо API для этого. Как findContours с 3 пикселями внутренней, чем фактическая точка.

Image

Первое изображение является источником и второе изображение с желтой части должны быть возвращены в качестве координат.

Спасибо, Унния

+0

Я думаю, вы должны добавить функцию, которая будет изменять размер найденного контура с й/contour_length, или каким-либо другим соотношением ... – sop

+0

Still не знаю, как это сделать. Любые другие указатели приветствуются. – unniks

ответ

0

Как не было дано никаких другие предложения, следующий метод решить мою проблему:

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

findcontour
Еогеасп контур в контурах
клон изображения
установлен 0 в образе
drawcontours с контур, имеющий пикселя шириной п
findcontour
принять внутренний контур и хранить для последующего использования
следующий контур

клон изображения
установить 0 в образе
drawcontours с сохраненными контурами
конечных

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