Удаление ссылки в opencv 3.0 C

#c #opencv #opencv3.0

#c #opencv #opencv3.0

Вопрос:

Я нахожу объект на изображении, используя контуры. и я включаю возможные значения в boundRects, чтобы увидеть конечный результат, я хочу удалить итоговые значения, где высота> ширина (заключите его в черные круги). Любое предложение для этого. Спасибо спасибо за вашу помощь и ответ. Мой код:

 enter vector<vector<Point> > contours_poly(contours.size());
            vector<Rect> boundRect(contours.size());

            for (size_t i = 0; i < contours.size(); i  )
            {
                approxPolyDP(Mat(contours[i]), contours_poly[i], 3, true);
                boundRect[i] = boundingRect(Mat(contours_poly[i]));
            }
             for (int i = 0; i < contours.size(); i  )
            {
                Scalar color = Scalar(255, 0, 255);
                rectangle(result_white, boundRect[i].tl(), boundRect[i].br(), color, 2, 8, 0);
                rectangle(imageLoad, boundRect[i].tl(), boundRect[i].br(), color, 2, 8, 0);
            }
            imshow("white final", imageLoad);
  

и конечный результат:
окончательное изображение

Комментарии:

1. Что вы имеете в виду под удалением? Если вы хотите удалить содержимое изображения в этот момент, вы можете создать маску и применить эту маску к изображению.

2. Спасибо за ваш комментарий, я хочу стереть контуры внутри созданного boundRect.

3. И с «erase» вы имеете в виду что?

4. это означает, что эти области не представляют для меня хорошего результата. Итак, единственное, что я хочу, это отбросить эти области, и выбрать единственную интересующую меня область, то есть прямоугольную, где высота < ширина. Спасибо.

5. Хорошо, тогда вы можете нарисовать графы в цвете вашего фона (или любого другого цвета, который вам нравится), чтобы избавиться от них. используйте drawContours и флаг CV_FiILLED .

Ответ №1:

Зачем их удалять?

Просто не добавляйте их к вектору прямоугольников, если он не соответствует вашим требованиям (используйте push_back для вектора).

Комментарии:

1. Спасибо за ваш комментарий, я хочу стереть контуры внутри созданного boundRect.

2. Затем нарисуйте прямоугольники, заполненные фоновым цветом.

3. Спасибо за ответ @Andrey Smorodov