我有一个应用程序,可以在一个框架中找到一个对象,并使用warpPerspective
将图像更正为方形。在此过程中,您可以指定输出图像大小。但是,我想知道如何在不损害其表观尺寸的情况下这样做。如何在不改变图像大小的情况下取消图像的四角?我不需要图像本身,我只想在原始图像中测量其像素的高度和宽度。
std::vector<cv::Point2f> transformedPoints;
cv::Mat M = cv::getPerspectiveTransform(points, objectCorners);
cv::perspectiveTransform(points, transformedPoints, M);
这将使图像平方,但就objectCorners
坐标系而言。这是-0.5f到0.5f不是原始图像平面。
cv::Rect boundingRectangle = cv::boundingRect(points);
该函数计算并返回指定点集的最小右上边界矩形。
我想要的是在它被平方后的边界矩形,而不是没有平方。
答案 0 :(得分:0)
根据我对你的帖子的理解,这里应该有所帮助。 OpenCV perspective transform example
更新,如果它仍然无法帮助您找到图像中的高度和宽度
答案 1 :(得分:0)
cv::RotatedRect box = cv::minAreaRect(cv::Mat(points));
正如OpenCV网站上的minAreaRect reference所述
查找包围输入2D点集的最小区域的旋转矩形。
您可以拨打box.size
并获取宽度和高度。