我已经使用 cv.rectangle 绘制了一个矩形,并且有一个轮廓形状(来自 FindContours),该矩形被绘制在上面。
矩形在两点与完整轮廓相交。如何找到矩形和轮廓轮廓之间的这些交点。
我可以将这两个图像加在一起并寻找最大值,但我知道矩形顶点是如何存储的,因为我需要一个填充了一组点的线型向量
谢谢
我已经使用 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)
}