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