Пересечение между контуром и прямоугольником OPENcv Переполнение стека

Я нарисовал прямоугольник с помощью cv.rectangle и у меня есть контурная форма (из FindContours), над которой нарисован прямоугольник.

Прямоугольник пересекает весь контур в двух точках. Как я могу найти эти точки пересечения между прямоугольником и контуром контура.

Я мог бы добавить два изображения вместе и искать максимумы, но я знаю, как хранятся вершины прямоугольника, так как мне нужен вектор типа линии, заполненный набором точек

Спасибо

3

Решение

Если вы уверены, что ваш прямоугольник пересекает форму только в 2 точках, вы можете перебрать свою точку контура и проверить, находятся ли эти точки на границе вашего прямоугольника.

std::vector<cv::Point> shape; // computed with FindContours
cv::Rect myRect; //whatever

const int NUMPOINTS = 2;
int found = 0;
for(std::vector<cv::Point>::iterator it = shape.begin(); it != shapes.end() && found < NUMPOINTS; ++it) {
if (it->y == myRect.y && it->x >= myRect.x && it->x < myRect.x + width)
// that point cross the top line of the rectangle
found++; // you might want to store the point
else if (// ... add the other checks here)

}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]