python使用opencv画圣诞树和画小星星函数

画星星函数:

#img 图片
#x y 坐标
#size 大小
def darw_star(img,x,y,color,size=40):
    poly_line=np.array([[x, y-size], [x+int(size/4), y-int(size/4)], [x+size, y-int(size/4)],[x+int(0.375*size),y+int(size/4)],[x+size,y+size],\
                        [x,y+int(0.625*size)],[x-size,y+size],[x-int(0.375*size),y+int(size/4)],[x-size,y-int(size/4)],[x-int(size/4),y-int(size/4)]], np.int32)
    cv2.polylines(img,[poly_line],True,color,4,16)

代码如下:

import cv2
import numpy as np
import random



img=np.zeros([640,640,3]).astype(np.uint8)
img=img.ravel()
for i,j in enumerate(img):
    if j==0:
        img[i]=255
img=np.reshape(img,[640,640,3])

i=50
j=30
for num in range(6):
    r = random.randint(0, 255)
    b = random.randint(0, 255)
    g = random.randint(0, 255)
    cv2.ellipse(img,[320,50],[i,j],60,0,60,[b,g,r],4,16)
    i+=80
    j+=80

i=30
j=10
for num in range(6):
    r = random.randint(0, 255)
    b = random.randint(0, 255)
    g = random.randint(0, 255)
    cv2.ellipse(img,[320,50],[i,j],60,0,60,[b,g,r],4,16)
    i+=80
    j+=80

i=70
j=50
for num in range(5):
    r = random.randint(0, 255)
    b = random.randint(0, 255)
    g = random.randint(0, 255)
    cv2.ellipse(img,[320,50],[i,j],60,0,60,[b,g,r],4,16)
    i+=80
    j+=80

i=90
j=70
for num in range(5):
    r = random.randint(0, 255)
    b = random.randint(0, 255)
    g = random.randint(0, 255)
    cv2.ellipse(img,[320,50],[i,j],60,0,60,[b,g,r],4,16)
    i+=80
    j+=80

def darw_star(x,y,color,size=40):
    global img
    poly_line=np.array([[x, y-size], [x+int(size/4), y-int(size/4)], [x+size, y-int(size/4)],[x+int(0.375*size),y+int(size/4)],[x+size,y+size],\
                        [x,y+int(0.625*size)],[x-size,y+size],[x-int(0.375*size),y+int(size/4)],[x-size,y-int(size/4)],[x-int(size/4),y-int(size/4)]], np.int32)
    cv2.polylines(img,[poly_line],True,color,4,16)

for i in range(50):
    darw_star(325,50,[0,255,255],i)
darw_star(325,50,[0,0,0],50)

for i in range(40):
    darw_star(320,200,[0,0,255],i)
darw_star(320,200,[0,0,0],40)

for i in range(30):
    darw_star(370,300,[0,255,255],i)
darw_star(370,300,[0,0,0],30)

for i in range(30):
    cv2.circle(img,(420,450),i,[0,255,0])
cv2.circle(img,(420,450),30,[0,0,0],4,16)

for i in range(30):
    cv2.circle(img,(220,450),i,[0,0,255])
cv2.circle(img,(220,450),30,[0,0,0],4,16)

for i in range(30):
    cv2.circle(img,(200,300),i,[0,255,255])
cv2.circle(img,(200,300),30,[0,0,0],4,16)

for i in range(30):
    cv2.circle(img,(450,300),i,[255,100,0])
cv2.circle(img,(450,300),30,[0,0,0],4,16)

for i in range(30):
    darw_star(340,420,[255,0,255],i)
darw_star(340,420,[0,0,0],30)

for i in range(40):
    darw_star(150,380,[255,100,255],i)
darw_star(150,380,[0,0,0],40)

cv2.putText(img,'Merry Christmas',[80,560],cv2.FONT_HERSHEY_SIMPLEX,2,[0,0,255],thickness=4)

cv2.imshow('fr',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

尽力了,opencv太难画了
效果如下:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/darlingqx/article/details/128160919