cv::RotateRect rect;
cv::Mat image;
//如果原图被压缩0.5既*0.5,若原图不压缩则*1
cv::Vec2d points[4] = {
cv::Vec2d(rect.size.width * 0.5, rect.size.heigtht 0.5),
cv::Vec2d(rect.size.width * 0.5, -rect.size.heigtht 0.5),
cv::Vec2d(-rect.size.width * 0.5, -rect.size.heigtht 0.5),
cv::Vec2d(-rect.size.width * 0.5, rect.size.heigtht 0.5),
};
//角度转弧度
double theta= rect.angle * 3.14159 / 180.0;
//
double a00 = cos(theta),a01 = -sin(theta);
double a10 = sin(theta),a11 = cos(theta);
cv::Point2d newPoints[4];
for(int i = 0; i < 4; ++i){
newPoints[i].x = points[i][0] * a00 + point[i][1] * a01;
newPoints[i].y = points[i][0] * a10 + point[i][1] * a11;
}
for(int i = 0; i < 4; ++i){
cv::line(image,newPoints[i],newPoints[(i+1)%4]),cv::Scalar(0,0,255),1);
}
opencv 旋转矩形框
最新推荐文章于 2023-09-15 20:49:45 发布
这篇文章介绍了如何使用OpenCV库中的cv::RotateRect和相关函数进行图像旋转,重点讲解了如何根据原始矩形调整坐标并应用旋转矩阵。通过实例展示了如何处理缩放后的四点变换,以及计算旋转角度和创建新的旋转边界框。
摘要由CSDN通过智能技术生成