Я нарисовал прямоугольник с помощью cv.rectangle и у меня есть контурная форма (из FindContours), над которой нарисован прямоугольник.
Прямоугольник пересекает весь контур в двух точках. Как я могу найти эти точки пересечения между прямоугольником и контуром контура.
Я мог бы добавить два изображения вместе и искать максимумы, но я знаю, как хранятся вершины прямоугольника, так как мне нужен вектор типа линии, заполненный набором точек
Спасибо
Если вы уверены, что ваш прямоугольник пересекает форму только в 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)
}
Других решений пока нет …