Mariya 0 Report post Posted February 2 Подскажите, пожалуйста. Есть бинарные изображения. Как выделить одним прямоугольником область, где есть белые пиксели? Если выделить контуры, то как все контуры объединить одним общим контуром? Красным цветом - примерный результат. Спасибо. Share this post Link to post Share on other sites
Nuzhny 238 Report post Posted February 2 Если пишешь на С++, то всё просто. Контуры представляются в виде векторов (std::vector), поэтому можно просто добавить точки из всех векторов в один и для него вызвать cv::convexHull Share this post Link to post Share on other sites
Mariya 0 Report post Posted February 4 Спасибо! Попробую сделать. Share this post Link to post Share on other sites
Mariya 0 Report post Posted February 4 С 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 569 Report post Posted February 5 Не знаю как в шарпе это будет выглядеть, но вообще надо перебрать все контуры, а в контурах перебрать все точки. Двухуровневый цикл. Может тут что интересное найдете: 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