画矩形操作
Point center = Point((left.center.x + right.center.x) / 2, (left.center.y + right.center.y) / 2);
RotatedRect rect = RotatedRect(center, Size(dis, meanheight), (left.angle + right.angle) / 2);//计算装甲板的四个角点
Point2f vertices[4];
rect.points(vertices);//从RotatedRect类中提取出角点
for (int i = 0; i < 4; i++) {
line(frame, vertices[i], vertices[(i + 1) % 4], Scalar(0, 0, 255), 2);
cout << vertices[i] << endl;
}
效果图:
:
点坐标
[440.799, 205.927]
[444.401, 176.144]
[609.201, 196.073]
[605.599, 225.856]
可以看到系统自动把vertices[0]定在了左下角,可是vertices[0]点的Y坐标不是最大的,似乎于x轴坐标有关。
但我参考了其他文章,似乎不同的版本起始点定的位置也不一样,不要想当然的认为点就是在y坐标最大的为起始坐标了。我opencv的版本是4.1.0.文章来源:https://www.toymoban.com/news/detail-641491.html
所以想要使用角点进行仿射变化,建议先输出一次找点的方位,或者将点排序。文章来源地址https://www.toymoban.com/news/detail-641491.html
到了这里,关于opencv关于使用cvRotatedRect函数计算并画出矩形四个点的返回位置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!