opencv关于使用cvRotatedRect函数计算并画出矩形四个点的返回位置

画矩形操作

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;
                        }

效果图:

opencv关于使用cvRotatedRect函数计算并画出矩形四个点的返回位置_第1张图片

点坐标

[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.

所以想要使用角点进行仿射变化,建议先输出一次找点的方位,或者将点排序。

你可能感兴趣的:(opencv)