#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