代码
做一个壁纸帮助学习钢琴。
import cv2
import numpy as np
badu = 5
baijiankuan = 46
heijiankuan = 24
baijianchang = 288
heijianchang = 190
fengxikuan = 1
zitishangxia = 15
zitizuoyou = 10
shuzizuoyou = 17
shuzishangxia = 10
img = np.ones([baijianchang, (baijiankuan + fengxikuan) * badu * 7], dtype=np.uint8) * 255
for i in range(fengxikuan):
img[:, baijiankuan + i::baijiankuan + fengxikuan] = 0
for i in range(heijiankuan):
for j in [0, 1, 3, 4, 5]:
img[:heijianchang,
baijiankuan + i - heijiankuan // 2 + j * (baijiankuan + fengxikuan)::(baijiankuan + fengxikuan) * 7] = 0
for i, j in enumerate(['C', 'D', 'E', 'F', 'G', 'A', 'B']):
cv2.putText(img, j, (i * (baijiankuan + fengxikuan) + baijiankuan // 2 - zitizuoyou, baijianchang - zitishangxia),
cv2.FONT_HERSHEY_SIMPLEX, 1, 0, 1, cv2.LINE_AA)
for i, j in enumerate(['c', 'd', 'e', 'f', 'g', 'a', 'b']):
for k in range(badu - 1):
cv2.putText(img, j, (
i * (baijiankuan + fengxikuan) + baijiankuan // 2 - zitizuoyou + (baijiankuan + fengxikuan) * 7 * (k + 1),
baijianchang - zitishangxia), cv2.FONT_HERSHEY_SIMPLEX, 1, 0, 1, cv2.LINE_AA)
for k in range(badu - 2):
cv2.putText(img, str(k + 1), (
i * (baijiankuan + fengxikuan) + baijiankuan // 2 - zitizuoyou + (baijiankuan + fengxikuan) * 7 * (
k + 2) + shuzizuoyou,
baijianchang - zitishangxia - shuzishangxia), cv2.FONT_HERSHEY_SIMPLEX, 0.5, 0, 1, cv2.LINE_AA)
tupianchang = 470
wuxianpuweizhi1 = 120
wuxianpuweizhi2 = 300
wuxianpukuan = 20
wuxianpuxiankuan = 1
yinfuxianchang = 60
yinfuzuoyou = 12
yinfushangxia = 1
jiaxianchang = 30
img2 = np.zeros([tupianchang, (baijiankuan + fengxikuan) * badu * 7], dtype=np.uint8)
for i in range(fengxikuan):
img2[:, baijiankuan + i::baijiankuan + fengxikuan] = 80
for i in range(wuxianpuxiankuan):
img2[
wuxianpuweizhi1 + i:wuxianpuweizhi1 + i + (wuxianpukuan + wuxianpuxiankuan) * 5:wuxianpukuan + wuxianpuxiankuan,
:] = 255
img2[
wuxianpuweizhi2 + i:wuxianpuweizhi2 + i + (wuxianpukuan + wuxianpuxiankuan) * 5:wuxianpukuan + wuxianpuxiankuan,
:] = 255
for i in range(20):
cv2.ellipse(img2, (baijiankuan // 2 + i * (baijiankuan + fengxikuan),
wuxianpuweizhi2 - (i - 12) * (wuxianpuxiankuan + wuxianpukuan) // 2),
(wuxianpukuan // 2 + 2, wuxianpukuan // 2 - 3), -25, 0, 360, 255, -1, cv2.LINE_AA)
if i < 3:
for j in range((4 - i) // 2):
for k in range(wuxianpuxiankuan):
img2[wuxianpuweizhi2 + k + (wuxianpukuan + wuxianpuxiankuan) * 5:wuxianpuweizhi2 + k + (
wuxianpukuan + wuxianpuxiankuan) * (j + 6):wuxianpukuan + wuxianpuxiankuan,
baijiankuan // 2 + i * (baijiankuan + fengxikuan) - jiaxianchang // 2:baijiankuan // 2 + i * (
baijiankuan + fengxikuan) + jiaxianchang // 2] = 255
if i > 13:
for j in range((i - 12) // 2):
for k in range(wuxianpuxiankuan):
img2[wuxianpuweizhi2 + k + (wuxianpukuan + wuxianpuxiankuan) * (-j - 1):wuxianpuweizhi2 + k + (
wuxianpukuan + wuxianpuxiankuan) * (0):wuxianpukuan + wuxianpuxiankuan,
baijiankuan // 2 + i * (baijiankuan + fengxikuan) - jiaxianchang // 2:baijiankuan // 2 + i * (
baijiankuan + fengxikuan) + jiaxianchang // 2] = 255
for i in range(23):
cv2.ellipse(img2, (baijiankuan // 2 + (i + 12) * (baijiankuan + fengxikuan),
wuxianpuweizhi1 - (i - 12) * (wuxianpuxiankuan + wuxianpukuan) // 2),
(wuxianpukuan // 2 + 2, wuxianpukuan // 2 - 3), -25, 0, 360, 255, -1, cv2.LINE_AA)
if i < 3:
for j in range((4 - i) // 2):
for k in range(wuxianpuxiankuan):
img2[wuxianpuweizhi1 + k + (wuxianpukuan + wuxianpuxiankuan) * 5:wuxianpuweizhi1 + k + (
wuxianpukuan + wuxianpuxiankuan) * (j + 6):wuxianpukuan + wuxianpuxiankuan,
baijiankuan // 2 + (i + 13) * (baijiankuan + fengxikuan) - jiaxianchang // 2:baijiankuan // 2 + (
i + 13) * (
baijiankuan + fengxikuan) + jiaxianchang // 2] = 255
if i > 13:
for j in range((i - 12) // 2):
for k in range(wuxianpuxiankuan):
img2[wuxianpuweizhi1 + k + (wuxianpukuan + wuxianpuxiankuan) * (-j - 1):wuxianpuweizhi1 + k + (
wuxianpukuan + wuxianpuxiankuan) * (0):wuxianpukuan + wuxianpuxiankuan,
baijiankuan // 2 + (i + 12) * (baijiankuan + fengxikuan) - jiaxianchang // 2:baijiankuan // 2 + (
i + 12) * (
baijiankuan + fengxikuan) + jiaxianchang // 2] = 255
for i in range(8):
cv2.line(img2, (baijiankuan // 2 + i * (baijiankuan + fengxikuan) + yinfuzuoyou,
wuxianpuweizhi2 - (i - 12) * (wuxianpuxiankuan + wuxianpukuan) // 2 - yinfushangxia),
(baijiankuan // 2 + i * (baijiankuan + fengxikuan) + yinfuzuoyou,
wuxianpuweizhi2 - (i - 12) * (wuxianpuxiankuan + wuxianpukuan) // 2 - yinfushangxia - yinfuxianchang),
255, 1, cv2.LINE_AA)
for i in range(8, 20):
cv2.line(img2, (baijiankuan // 2 + i * (baijiankuan + fengxikuan) - yinfuzuoyou,
wuxianpuweizhi2 - (i - 12) * (wuxianpuxiankuan + wuxianpukuan) // 2 + yinfushangxia),
(baijiankuan // 2 + i * (baijiankuan + fengxikuan) - yinfuzuoyou,
wuxianpuweizhi2 - (i - 12) * (wuxianpuxiankuan + wuxianpukuan) // 2 + yinfushangxia + yinfuxianchang),
255, 1, cv2.LINE_AA)
for i in range(8):
cv2.line(img2, (baijiankuan // 2 + (i + 12) * (baijiankuan + fengxikuan) + yinfuzuoyou,
wuxianpuweizhi1 - (i - 12) * (wuxianpuxiankuan + wuxianpukuan) // 2 - yinfushangxia),
(baijiankuan // 2 + (i + 12) * (baijiankuan + fengxikuan) + yinfuzuoyou,
wuxianpuweizhi1 - (i - 12) * (wuxianpuxiankuan + wuxianpukuan) // 2 - yinfushangxia - yinfuxianchang),
255, 1, cv2.LINE_AA)
for i in range(8, 23):
cv2.line(img2, (baijiankuan // 2 + (i + 12) * (baijiankuan + fengxikuan) - yinfuzuoyou,
wuxianpuweizhi1 - (i - 12) * (wuxianpuxiankuan + wuxianpukuan) // 2 + yinfushangxia),
(baijiankuan // 2 + (i + 12) * (baijiankuan + fengxikuan) - yinfuzuoyou,
wuxianpuweizhi1 - (i - 12) * (wuxianpuxiankuan + wuxianpukuan) // 2 + yinfushangxia + yinfuxianchang),
255, 1, cv2.LINE_AA)
img3 = np.concatenate((img, img2), axis=0)
h, w = img3.shape
new_h = int(w / 16 * 9)
img4 = np.concatenate((np.zeros([new_h - h, w], dtype=np.uint8), img3), axis=0)
cv2.imwrite('1.png', img4)
cv2.imshow('a', img4)
cv2.waitKey()