opencv 旋转矩形框

这篇文章介绍了如何使用OpenCV库中的cv::RotateRect和相关函数进行图像旋转,重点讲解了如何根据原始矩形调整坐标并应用旋转矩阵。通过实例展示了如何处理缩放后的四点变换,以及计算旋转角度和创建新的旋转边界框。
摘要由CSDN通过智能技术生成
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);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值