opencv画五角星

import cv2
import numpy as np
import math

img = np.zeros((400, 400, 3), np.uint8)
points = []
base = (200, 200)
start_angle = 40
x = 120
y =35

#a*math.sin(36/180.0*math.pi)==b*math.sin(18/180.0*math.pi)
#b=a*math.sin(0.2*math.pi)/float(math.sin(0.1*math.pi))
#a*math.cos(36/180.0*math.pi)+b*math.cos(18/180.0*math.pi)=x
#a*(math.cos(0.2*math.pi)+(math.cos(0.1*math.pi)*math.sin(0.2*math.pi)/float(math.sin(0.1*math.pi))))=x
y=x/(math.cos(0.2*math.pi)+math.sin(0.2*math.pi)/math.tan(0.1*math.pi))



def get_point(angle, d, base):
    angle=angle/180.0*math.pi
    _x, _y = math.cos(angle) * d, math.sin(angle) * d
    return [base[0] +_x, base[1] - _y]


for i in range(5):
    _x, _y = math.cos(start_angle), math.sin(start_angle)
    points.append(get_point(start_angle, x, base))

    start_angle -= 36
    points.append(get_point(start_angle, y, base))
    start_angle-=36

    pass
points=np.array([points],np.int32)

cv2.fillPoly(img, points, (0, 0, 255), cv2.LINE_AA)

cv2.imshow("img", img)
cv2.waitKey(0)
cv2.destroyAllWindows()



五角星图片

posted @ 2018-01-19 18:06  以我之丿名  阅读(1279)  评论(1编辑  收藏  举报