代码

做一个壁纸帮助学习钢琴。

import cv2
import numpy as npbadu = 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,:] = 255img2[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] = 255if 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] = 255if 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()

结果图

python opencv生成钢琴键与五线谱的对照图相关推荐

  1. 使用Python,OpenCV生成Aruco标记

    这篇博客将介绍Aruco标记是什么,以及如何使用Python,OpenCV生成Aruco标记.本文提供俩种生成方式:在线生成和代码生成: 使用OpenCV处理ArUco标签非常简单,因为OpenCV库 ...

  2. python opencv生成tf模型_基于TensorFlow+ Opencv 的人脸识别 和模型训练

    一.准备工作 本次实例的anaconda 环境 (有需要的自己导入anaconda) 链接:https://pan.baidu.com/s/1IVt2ap-NYdg64uHSh-viaA 提取码:g7 ...

  3. python opencv生成模糊图像

    去除由于对焦,运动等造成的模糊图像,所以在构建数据集的时候考虑用opencv对清晰的图片进行处理获得模糊的图片从而进行训练. 1) 运动模糊图像 一般来说,运动模糊的图像都是朝同一方向运动的,那么就可 ...

  4. python+opencv生成较真实的车牌号码图片

    本文参考github代码:https://github.com/loveandhope/license-plate-generator 效果: 一.代码目录结构: background目录下存放各种背 ...

  5. python opencv生成 html5 支持的mp4

    c++操作mp文件: c++OpenCV操作mp4_jacke121的专栏-CSDN博客 opencv4.0 opencv3.3也支持 # -*- coding: utf-8 -*- import o ...

  6. 使用Python+OpenCV+dlib为人脸生成口罩

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达推荐阅读 42个pycharm使用技巧,瞬间从黑铁变王者Google ...

  7. 面部表情识别java_使用Python+OpenCV+dlib为人脸生成口罩

    来源:深度学习与计算机视觉 本文约4800字,建议阅读6分钟本文试图用OpenCV和dlib库来实现这个过程,在这里我们综合生成5种类型的口罩来绘制人脸图像. 本文使用OpenCV dlib库生成口罩 ...

  8. python绘制黑白棋盘_生成黑白棋盘标定图和单目相机标定(python+opencv实现)

    学习记录. 事实上很早就接触过视觉定位这东西,但是到现在才返回头学习一下相机的标定,真是可耻啊!我把想法和过程记录一下. 相机成像 相机的成像原理--小孔成像 然而,在实际由于设计工艺问题.相机安装环 ...

  9. 生成黑白棋盘标定图和单目相机标定(一)(python+opencv实现)

    学习记录. 事实上很早就接触过视觉定位这东西,但是到现在才返回头学习一下相机的标定,真是可耻啊!我把想法和过程记录一下. 相机成像 相机的成像原理--小孔成像 然而,在实际由于设计工艺问题.相机安装环 ...

最新文章

  1. CentOS 5.2 下安装tripwire2.3.1.2出错解决
  2. ucos iii学习笔记——为什么选择ucos iii
  3. 2021年程序员1月薪资大幅度上涨,你的2021有奔头了吗?
  4. idea怎么导入jxl.jar库
  5. 云和恩墨大讲堂丨PostgreSQL逻辑复制案例分享
  6. 一蔚来ES8汽车疑似失控 将地下车库墙撞穿
  7. 共享WiFi码项目一天赚3000,一个月6W,背后逻辑与源代码分析
  8. 剑指offer--46.47.发散思维能力
  9. 2021-06-19:交错字符串。 有三个字符串s1,s2,s3。判断s3是否由s1和s2交错组成的。比如s1=“abc“,s2=“123“,s3=“12ab3c“,应该返回true,因为s3去掉12
  10. 动漫人物各种角度的画法大合集
  11. 根据血象化验单判断感冒类型
  12. Cornerstone无法上传静态库文件(.a文件)
  13. android 渠道方案,Android 不同渠道差异代码
  14. 【电机应用控制】——步进电机控制原理(四相五线/两相四线/细分驱动)驱动器梯形/S形加减速算法直线/圆弧插补
  15. 遍历列表python_Python-遍历列表中的每两个元素
  16. Python 卷积神经网络 ResNet的基本编写方法
  17. 【信息分析与预测】Python实验课
  18. 投掷硬币实matlab,Matlab扔硬币程序设计
  19. SOTA model / SOTA result / SOTA模型究竟是什么?
  20. 谈谈vue的ssr方案

热门文章

  1. 省级面板数据(2000-2019)十二:工业(主要经济指标、产量)(stata版)
  2. 算法导论-上课笔记11:单源最短路径
  3. 如何修改gitLab远程服务器登录密码以及修改gitLab网站用户密码
  4. 读“Hyperspectral Image Classification With Squeeze Multibias Network”
  5. UE4 虚幻引擎,更改源代码编辑器 Visual Studio ,Rider
  6. 南昌php总人数,2018南昌市人口数量是多少,历年南昌市各区人口数量排行榜
  7. 视觉SLAM 关键技术与发展概述
  8. 发明导诊机器人团队_机器人进军医疗领域,智能导诊准确率高达95%以上
  9. Java在线人才招聘系统求职兼职应聘(含源码+论文+答辩PPT等)
  10. J2EE Java黑客大曝光:开发安全的Java应用程序