Mariya 0 Жалоба Опубликовано February 2, 2021 Подскажите, пожалуйста. Есть бинарные изображения. Как выделить одним прямоугольником область, где есть белые пиксели? Если выделить контуры, то как все контуры объединить одним общим контуром? Красным цветом - примерный результат. Спасибо. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано February 2, 2021 Если пишешь на С++, то всё просто. Контуры представляются в виде векторов (std::vector), поэтому можно просто добавить точки из всех векторов в один и для него вызвать cv::convexHull Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Mariya 0 Жалоба Опубликовано February 4, 2021 Спасибо! Попробую сделать. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Mariya 0 Жалоба Опубликовано February 4, 2021 С 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) { ... } Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано February 5, 2021 Не знаю как в шарпе это будет выглядеть, но вообще надо перебрать все контуры, а в контурах перебрать все точки. Двухуровневый цикл. Может тут что интересное найдете: https://csharp.hotexamples.com/ru/examples/Emgu.CV.Util/VectorOfVectorOfPoint/-/php-vectorofvectorofpoint-class-examples.html Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах