【python入门】opencv画正多边形

2025-10-27 15:44:53

1、平面上的旋转,可以用旋转矩阵左乘来实现,所以,先给出旋转矩阵:

def xzjz(angle):

    a=angle*np.pi/180

    A=np.array([[np.cos(a),-np.sin(a)],

                [np.sin(a),np.cos(a)]])

    return A

比如,旋转60°的旋转矩阵是:

【python入门】opencv画正多边形

2、用旋转矩阵可以实现旋转:

def xz(pt1,pt2,angle):

    pt1=np.array(pt1)

    pt2=np.array(pt2)

    vector0=pt2-pt1

    A=xzjz(angle)

    pt=np.dot(A,vector0)

    return pt+pt2

返回的是pt1绕pt2旋转之后,得到的点的坐标。

【python入门】opencv画正多边形

3、连续旋转n-1次,可以获得正n边形的n个顶点:

def zdbx(pt1,pt2,n):

    pt1=np.array(pt1)

    pt2=np.array(pt2)

    angle=360/n

    A=[pt1,pt2]

    for i in range(n-1):

        pt=xz(pt1,pt2,angle)

        pt1=pt2

        pt2=pt

        A.append(np.int32(pt))

    return np.array(A)

比如,正方形的四个定点后面再重复写第一个顶点,连接起来是一个封闭的正方形。

【python入门】opencv画正多边形

4、以画布中心为坐标原点,画指定的正多边形。

【python入门】opencv画正多边形

5、plotzdbx(img,(0,0),(100,0),6)

【python入门】opencv画正多边形

6、绕画布中心旋转的正多边形。

【python入门】opencv画正多边形

【python入门】opencv画正多边形

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢