Перейти к содержимому
Compvision.ru
Mariya

Объединение контуров в один

Recommended Posts

Подскажите, пожалуйста. Есть бинарные изображения.

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

Если выделить контуры, то как все контуры объединить одним общим контуром?

Красным цветом - примерный результат.

Спасибо.

bin1368.png

3.png

bin1368 (1).png

5.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если пишешь на С++, то всё просто. Контуры представляются в виде векторов (std::vector), поэтому можно просто добавить точки из всех векторов в один и для него вызвать cv::convexHull

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

С  convexHull  разобралась. А как добавить точки из всех векторов в один? Подскажите, пожалуйста.

Emgu.CV.Util.VectorOfVectorOfPoint contours = new Emgu.CV.Util.VectorOfVectorOfPoint();

Mat hier = new Mat();

CvInvoke.FindContours(imgopen, contours, hier, Emgu.CV.CvEnum.RetrType.Tree, Emgu.CV.CvEnum.ChainApproxMethod.ChainApproxNone);

for (int i = 0; i < contours.Size; ++i)
               { ... }

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не знаю как в шарпе это будет выглядеть, но вообще надо перебрать все контуры, а в контурах перебрать все точки. Двухуровневый цикл.
Может тут что интересное найдете: https://csharp.hotexamples.com/ru/examples/Emgu.CV.Util/VectorOfVectorOfPoint/-/php-vectorofvectorofpoint-class-examples.html

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×