石家庄城乡建设部网站首页,wordpress时间中文版,北京四大设计院,动态wordpress模板操作系统#xff1a;ubuntu22.04 OpenCV版本#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言#xff1a;C11
算法描述
找到一个包围输入的二维点集的最小面积旋转矩形。
该函数计算并返回指定点集的最小面积边界矩形#xff08;可能是旋转的#xff09;。开发者… 操作系统ubuntu22.04 OpenCV版本OpenCV4.9 IDE:Visual Studio Code 编程语言C11
算法描述
找到一个包围输入的二维点集的最小面积旋转矩形。
该函数计算并返回指定点集的最小面积边界矩形可能是旋转的。开发者需要注意的是当数据接近包含的 Mat 元素边界时返回的 RotatedRect 可能会包含负索引。
minAreaRect 是 OpenCV 库中的一个函数它用于查找一个给定的二维点集通常是一个轮廓的最小面积外接旋转矩形。这个矩形不同于标准的最小包围盒即由 cv::boundingRect 得到的直立矩形它可以旋转任意角度以适应轮廓的形状从而达到最小面积的效果。 使用场景 minAreaRect 常用于物体识别与定位特别是在需要处理旋转情况下的物体检测时。它可以帮助你找到一个物体的精确位置和方向这对于机器人视觉、工业检测等领域特别有用。
函数原型
RotatedRect cv::minAreaRect
(InputArray points
) 参数
参数points 输入的二维点向量存储在 std::vector 或 Mat 中。
返回值
RotatedRect: 返回的是一个 RotatedRect 对象它包含了最小外接矩形的信息。RotatedRect 包括三个属性 center (矩形的中心点坐标)size (矩形的宽度和高度)angle (矩形的旋转角度)
代码示例
#include iostream
#include opencv2/opencv.hpp
#include vectorusing namespace cv;
int main()
{// 创建一个空白图像Mat img( 400, 400, CV_8UC3, Scalar( 255, 255, 255 ) );std::vector cv::Point2f points;points.push_back( Point2f( 100, 100 ) );points.push_back( Point2f( 125, 125 ) );points.push_back( Point2f( 75, 125 ) );points.push_back( Point2f( 50, 150 ) );points.push_back( Point2f( 150, 150 ) );points.push_back( Point2f( 200, 250 ) );points.push_back( Point2f( 100, 250 ) );points.push_back( Point2f( 150, 300 ) );points.push_back( Point2f( 125, 275 ) );points.push_back( Point2f( 175, 275 ) );// 绘制原始点for ( const auto pt : points ){circle( img, pt, 5, Scalar( 0, 255, 0 ), -1 );}// 获取最小面积外接矩形cv::RotatedRect rect cv::minAreaRect( points );// 绘制最小面积外接矩形cv::Point2f vertices[ 4 ];rect.points( vertices );for ( int i 0; i 4; i ){cv::line( img, vertices[ i ], vertices[ ( i 1 ) % 4 ], cv::Scalar( 0, 255, 0 ), 2 );}// 显示图像cv::imshow( Image with Min Area Rect, img );cv::waitKey( 0 );return 0;
}运行结果