Jump to content
Compvision.ru
Mariya

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

Recommended Posts

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

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

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

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

Спасибо.

bin1368.png

3.png

bin1368 (1).png

5.png

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

С  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

Не знаю как в шарпе это будет выглядеть, но вообще надо перебрать все контуры, а в контурах перебрать все точки. Двухуровневый цикл.
Может тут что интересное найдете: 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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Recently Browsing   0 members

    No registered users viewing this page.

×