繁体   English   中英

OpenCV测量矩形图像大小

[英]OpenCV measure rectangular image size

我有一个可以在框架中找到对象并使用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);

但正如文档所述

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

我想要的是将矩形平方后的边界矩形,而不是不对其进行平方。

根据我对您的帖子的了解,以下内容应该会对您有所帮助。 OpenCV透视图转换示例

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

点的最小边界矩形

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

正如OpenCV网站上的minAreaRect参考所指出的

查找包含输入2D点集的最小面积的旋转矩形。

您可以调用box.size并获取宽度和高度。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM