OpenCV测量矩形图像大小

时间:2014-12-11 12:49:03

标签: c++ opencv

我有一个应用程序,可以在一个框架中找到一个对象,并使用warpPerspective将图像更正为方形。在此过程中,您可以指定输出图像大小。但是,我想知道如何在不损害其表观尺寸的情况下这样做。如何在不改变图像大小的情况下取消图像的四角?我不需要图像本身,我只想在原始图像中测量其像素的高度和宽度。

获取一个将角落对齐的变换矩阵。

std::vector<cv::Point2f> transformedPoints;
cv::Mat M = cv::getPerspectiveTransform(points, objectCorners);
cv::perspectiveTransform(points, transformedPoints, M);

这将使图像平方,但就objectCorners坐标系而言。这是-0.5f到0.5f不是原始图像平面。

BoundingRect几乎可以实现我的目标。

cv::Rect boundingRectangle = cv::boundingRect(points);

但是documentation states

  

该函数计算并返回指定点集的最小右上边界矩形。

我想要的是在它被平方后的边界矩形,而不是没有平方。

2 个答案:

答案 0 :(得分:0)

根据我对你的帖子的理解,这里应该有所帮助。 OpenCV perspective transform example

更新,如果它仍然无法帮助您找到图像中的高度和宽度

答案 1 :(得分:0)

点的最小边界矩形

cv::RotatedRect box = cv::minAreaRect(cv::Mat(points));

正如OpenCV网站上的minAreaRect reference所述

  

查找包围输入2D点集的最小区域的旋转矩形。

您可以拨打box.size并获取宽度和高度。