gpt4 book ai didi

c++ - 使用 C++ 在 opencv 2.3 中放大和限制四边形多边形

转载 作者:太空宇宙 更新时间:2023-11-03 23:03:54 24 4
gpt4 key购买 nike

我在任何地方都找不到这个答案,我希望有人能帮助我。

我有一个图像(全黑),里面有一个白色的通用四边形多边形,以及该多边形对应的 4 个角坐标。

我需要找到稍微放大的四边形的角和稍微缩小的四边形的角(形状必须相同,只是图像内部四边形的大小调整)。

是否有允许我这样做的函数,或者我应该手动计算一些几何图形?

感谢您的帮助。

最佳答案

考虑多边形的顶点 p 及其前身 p1 和后继 p2。

enter image description here

这些点之间的 vector 是

v1 = p1 - p
v2 = p2 - p

(计算分别针对 x 和 y 坐标进行分量计算)。在收缩的多边形中,顶点 p 沿线移动到 p'它将 vector v1 和 v2 之间的角度 a 减半。这个方向的 vector w是

w = v1 + v2

而这个方向的单位 vector v是

v = w / |w| = (w_x, w_y) / sqrt(w_x*w_x + w_y*w_y)

新点p'是

p' = p + k * v ,  i.e. :
p_x' = p_x + k * v_x
p_y' = p_y + k * v_y

其中 k 是移动距离(标量)。

如果顶点p是凸的(如图),则k >= 0表示收缩和 k <= 0 意味着扩张。如果顶点 p 是凹的,那么 k >= 0 意味着展开,k <= 0 表示收缩。

关于c++ - 使用 C++ 在 opencv 2.3 中放大和限制四边形多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7995547/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com