【计算机视觉】pycharm自制一个吉他扒谱软件(附源码)
【计算机视觉】pycharm自制一个吉他扒谱软件(附源码)
- 构思起源
- 结果展示
- 吉他音频和图片附件可以从我的git上下载
- 源码
构思起源
作为一个深度吉他爱好者,拥有一个自制的扒谱软件真是梦寐以求的事情,以前扒谱还要手画六线谱,谱子用完就扔了,很麻烦,现在有了这个软件一切就简单了,话不多说,下面就来看看吧
结果展示
运用鼠标按在上面的黄点,可以发出相应的吉他的声音,同时在上面的吉他谱上显示出相应的数字
吉他音频和图片附件可以从我的git上下载
链接: link.
源码
import cv2
from PIL import ImageGrab#截图的库
from playsound import playsound
image=cv2.imread(u'D:\\PycharmProjects\\pythonProject\\Saved Pictures\\IMG_20220228_123846_edit_112632392600521.jpg',1)#读取吉他图片
a=[]
b=[]#创建鼠标事件
def Event_Lbuttondown(event,x,y,flags,param):#设置鼠标事件,将点到的位置放出相应的声音if event==cv2.EVENT_LBUTTONDOWN:xy="%d,%d"%(x,y)a.append(x)b.append(y)#ab数组中存放了鼠标点击的坐标cv2.imshow("image",image)#--------当存了50个单音以后自动截图并保存再当前目录下,然后更新吉他谱if len(a)>50:img=ImageGrab.grab(bbox=(100,70,1830,400))str = input("输入歌曲名字")img.save(str+'.jpg')a.clear()cv2.rectangle(image, (100, 50), (1400, 240),(255, 255, 255), cv2.FILLED)cv2.line(image, (100, 70), (1400, 70), (255, 0, 0), 2)cv2.line(image, (100, 100), (1400, 100), (255, 0, 0), 2)cv2.line(image, (100, 130), (1400, 130), (255, 0, 0), 2)cv2.line(image, (100, 160), (1400, 160), (255, 0, 0), 2)cv2.line(image, (100, 190), (1400, 190), (255, 0, 0), 2)cv2.line(image, (100, 220), (1400, 220), (255, 0, 0), 2)#----------将每个案件结合鼠标事件,因为吉他中每个按键不是均匀分布的,所以我是一个一个敲的,没有用到矩阵,后面的代码大多数都差不多#------------------0品if 1457-12<x<1457+12 and \447-12<y<447+12:#---------------------鼠标坐标在黄色点上时触发鼠标事件cv2.putText(image,'0',(100+25*len(a),80),cv2.FONT_HERSHEY_PLAIN,2,(0,255,0),2)#--------同时将相应的数字写入吉他谱中cv2.imshow("image", image)#-----更新画面playsound(r"D:\音频文件\0_6.mp3")#-----同时播放音频文件if 1459 - 12 < x < 1459 + 12 and \477 - 12 < y < 477 + 12:cv2.putText(image, '0', (100+ 25 * len(a), 110), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\0_5.mp3")if 1464 - 12 < x < 1464+ 12 and \513 - 12 < y < 513 + 12:cv2.putText(image, '0', (100 + 25 * len(a), 140), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\0_4.mp3")if 1466 - 12 < x < 1466 + 12 and \546 - 12 < y < 546 + 12:cv2.putText(image, '0', (100 + 25 * len(a), 170), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\0_3.mp3")if 1465 - 12 < x < 1465 + 12 and \582 - 12 < y < 582 + 12:cv2.putText(image, '0', (100 + 25 * len(a), 200), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\0_2.mp3")if 1469 - 12 < x < 1469 + 12 and \614 - 12 < y < 614 + 12:cv2.putText(image, '0', (100 + 25 * len(a), 230), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\0_1.mp3")#------------------------第一品if 1374-12<x<1374+12 and \444-12<y<444+12:cv2.putText(image,'1',(100+25*len(a),80),cv2.FONT_HERSHEY_PLAIN,2,(0,255,0),2)cv2.imshow("image", image)playsound(r"D:\音频文件\1_1.mp3")if 1379 - 12 < x < 1379 + 12 and \477 - 12 < y < 477 + 12:cv2.putText(image, '1', (100+ 25 * len(a), 110), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\1_2.mp3")if 1381 - 12 < x < 1381+ 12 and \513 - 12 < y < 513 + 12:cv2.putText(image, '1', (100 + 25 * len(a), 140), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\1_3.mp3")if 1383 - 12 < x < 1383 + 12 and \546 - 12 < y < 546 + 12:cv2.putText(image, '1', (100 + 25 * len(a), 170), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\1_4.mp3")if 1386 - 12 < x < 1386 + 12 and \582 - 12 < y < 582 + 12:cv2.putText(image, '1', (100 + 25 * len(a), 200), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\1_5.mp3")if 1387 - 12 < x < 1387 + 12 and \617 - 12 < y < 617 + 12:cv2.putText(image, '1', (100 + 25 * len(a), 230), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\1_6.mp3")#-------------第二品if 1275 - 12 < x < 1275 + 12 and \439 - 12 < y < 439 + 12:cv2.putText(image, '2', (100 + 25 * len(a), 80), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\2_1.mp3")if 1277 - 12 < x < 1277 + 12 and \474 - 12 < y < 474 + 12:cv2.putText(image, '2', (100 + 25 * len(a), 110), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\2_2.mp3")if 1280 - 12 < x < 1280 + 12 and \511 - 12 < y < 511 + 12:cv2.putText(image, '2', (100 + 25 * len(a), 140), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\2_3.mp3")if 1279 - 12 < x < 1279 + 12 and \545 - 12 < y < 545 + 12:cv2.putText(image, '2', (100 + 25 * len(a), 170), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\2_4.mp3")if 1282 - 12 < x < 1282 + 12 and \584 - 12 < y < 584 + 12:cv2.putText(image, '2', (100 + 25 * len(a), 200), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\2_5.mp3")if 1282 - 12 < x < 1282 + 12 and \619 - 12 < y < 619 + 12:cv2.putText(image, '2', (100 + 25 * len(a), 230), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\2_6.mp3")#--------------------------333if 1180 - 12 < x < 1180 + 12 and \436 - 12 < y < 436 + 12:cv2.putText(image, '3', (100 + 25 * len(a), 80), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\3_1.mp3")if 1184 - 12 < x < 1184 + 12 and \474 - 12 < y < 474 + 12:cv2.putText(image, '3', (100 + 25 * len(a), 110), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\3_2.mp3")if 1185 - 12 < x < 1185 + 12 and \511 - 12 < y < 511 + 12:cv2.putText(image, '3', (100 + 25 * len(a), 140), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\3_3.mp3")if 1184 - 12 < x < 1184 + 12 and \549 - 12 < y < 549 + 12:cv2.putText(image, '3', (100 + 25 * len(a), 170), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\3_4.mp3")if 1185 - 12 < x < 1185 + 12 and \584 - 12 < y < 584 + 12:cv2.putText(image, '3', (100 + 25 * len(a), 200), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\3_5.mp3")if 1187 - 12 < x < 1187 + 12 and \623 - 12 < y < 623 + 12:cv2.putText(image, '3', (100 + 25 * len(a), 230), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\3_6.mp3")#--------------------4if 1086 - 12 < x < 1086 + 12 and \433 - 12 < y < 433 + 12:cv2.putText(image, '4', (100 + 25 * len(a), 80), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\4_1.mp3")if 1092 - 12 < x < 1092 + 12 and \471 - 12 < y < 471 + 12:cv2.putText(image, '4', (100 + 25 * len(a), 110), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\4_2.mp3")if 1095 - 12 < x < 1095 + 12 and \511 - 12 < y < 511 + 12:cv2.putText(image, '4', (100 + 25 * len(a), 140), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\4_3.mp3")if 1095 - 12 < x < 1095 + 12 and \549 - 12 < y < 549 + 12:cv2.putText(image, '4', (100 + 25 * len(a), 170), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\4_4.mp3")if 1095 - 12 < x < 1095 + 12 and \587 - 12 < y < 587 + 12:cv2.putText(image, '4', (100 + 25 * len(a), 200), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\4_5.mp3")if 1095 - 12 < x < 1095 + 12 and \627 - 12 < y < 627 + 12:cv2.putText(image, '4', (100 + 25 * len(a), 230), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\4_6.mp3")#---------------5if 1008-12<x<1008+12 and \430-12<y<430+12:cv2.putText(image,'5',(100+25*len(a),80),cv2.FONT_HERSHEY_PLAIN,2,(0,255,0),2)cv2.imshow("image", image)playsound(r"D:\音频文件\5_1.mp3")if 1006 - 12 < x < 1006 + 12 and \471 - 12 < y < 471 + 12:cv2.putText(image, '5', (100+ 25 * len(a), 110), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\5_2.mp3")if 1006 - 12 < x < 1006+ 12 and \511 - 12 < y < 511 + 12:cv2.putText(image, '5', (100 + 25 * len(a), 140), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\5_3.mp3")if 1010 - 12 < x < 1010 + 12 and \549 - 12 < y < 549 + 12:cv2.putText(image, '5', (100 + 25 * len(a), 170), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\5_4.mp3")if 1010 - 12 < x < 1010 + 12 and \589 - 12 < y < 589 + 12:cv2.putText(image, '5', (100 + 25 * len(a), 200), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\5_5.mp3")if 1010 - 12 < x < 1010 + 12 and \629 - 12 < y < 629 + 12:cv2.putText(image, '5', (100 + 25 * len(a), 230), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\5_6.mp3")#-----------------6666if 921-12<x<921+12 and \426-12<y<426+12:cv2.putText(image,'6',(100+25*len(a),80),cv2.FONT_HERSHEY_PLAIN,2,(0,255,0),2)cv2.imshow("image", image)playsound(r"D:\音频文件\6_1.mp3")if 922 - 12 < x < 922 + 12 and \471 - 12 < y < 471 + 12:cv2.putText(image, '6', (100+ 25 * len(a), 110), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\6_2.mp3")if 921 - 12 < x < 921 + 12 and \511 - 12 < y < 511 + 12:cv2.putText(image, '6', (100 + 25 * len(a), 140), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\6_3.mp3")if 919 - 12 < x < 919 + 12 and \551 - 12 < y < 551 + 12:cv2.putText(image, '6', (100 + 25 * len(a), 170), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\6_4.mp3")if 923 - 12 < x < 923 + 12 and \592 - 12 < y < 592 + 12:cv2.putText(image, '6', (100 + 25 * len(a), 200), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\6_5.mp3")if 920 - 12 < x < 920 + 12 and \637 - 12 < y < 637 + 12:cv2.putText(image, '6', (100 + 25 * len(a), 230), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\6_6.mp3")#-----------------77if 842-12<x<842+12 and \425-12<y<425+12:cv2.putText(image,'7',(100+25*len(a),80),cv2.FONT_HERSHEY_PLAIN,2,(0,255,0),2)cv2.imshow("image", image)playsound(r"D:\音频文件\7_1.mp3")if 842 - 12 < x < 842 + 12 and \470 - 12 < y < 470 + 12:cv2.putText(image, '7', (100+ 25 * len(a), 110), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\7_2.mp3")if 846 - 12 < x < 846 + 12 and \507 - 12 < y < 507 + 12:cv2.putText(image, '7', (100 + 25 * len(a), 140), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\7_3.mp3")if 845 - 12 < x < 845 + 12 and \552 - 12 < y < 552 + 12:cv2.putText(image, '7', (100 + 25 * len(a), 170), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\7_4.mp3")if 846 - 12 < x < 846 + 12 and \595 - 12 < y < 595 + 12:cv2.putText(image, '7', (100 + 25 * len(a), 200), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\7_5.mp3")if 846 - 12 < x < 846 + 12 and \639 - 12 < y < 639 + 12:cv2.putText(image, '7', (100 + 25 * len(a), 230), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)cv2.imshow("image", image)playsound(r"D:\音频文件\7_6.mp3")image=cv2.resize(image,(1500,700))#将图片拉伸成相应的大小#画出吉他谱cv2.rectangle(image, (100,50), (1400,240),(255,255,255), cv2.FILLED)
cv2.line(image,(100,70),(1400,70),(255,0,0),2)
cv2.line(image,(100,100),(1400,100),(255,0,0),2)
cv2.line(image,(100,130),(1400,130),(255,0,0),2)
cv2.line(image,(100,160),(1400,160),(255,0,0),2)
cv2.line(image,(100,190),(1400,190),(255,0,0),2)
cv2.line(image,(100,220),(1400,220),(255,0,0),2)#将吉他上的所有建用黄点标出cv2.putText(image,"0",(1453,383),cv2.FONT_HERSHEY_PLAIN,3,(0,0,255),5)
cv2.circle(image,(1457,447),12,(0,255,255),-1)
cv2.circle(image,(1459 ,478),12,(0,255,255),-1)
cv2.circle(image,(1464 ,514),12,(0,255,255),-1)
cv2.circle(image,(1466 ,546),12,(0,255,255),-1)
cv2.circle(image,(1465 ,581),12,(0,255,255),-1)
cv2.circle(image,(1469 ,614),12,(0,255,255),-1)cv2.putText(image,"1",(1373,389),cv2.FONT_HERSHEY_PLAIN,3,(0,0,255),5)
cv2.circle(image,(1374,444),12,(0,255,255),-1)
cv2.circle(image,(1379 ,477),12,(0,255,255),-1)
cv2.circle(image,(1381 ,513),12,(0,255,255),-1)
cv2.circle(image,(1383 ,546),12,(0,255,255),-1)
cv2.circle(image,(1386 ,582),12,(0,255,255),-1)
cv2.circle(image,(1387 ,617),12,(0,255,255),-1)cv2.putText(image,"2",(1277,383),cv2.FONT_HERSHEY_PLAIN,3,(0,0,255),5)
cv2.circle(image,(1275,439),12,(0,255,255),-1)
cv2.circle(image,(1277 ,474),12,(0,255,255),-1)
cv2.circle(image,(1280 ,511),12,(0,255,255),-1)
cv2.circle(image,(1279 ,545),12,(0,255,255),-1)
cv2.circle(image,(1282 ,584),12,(0,255,255),-1)
cv2.circle(image,(1282 ,619),12,(0,255,255),-1)cv2.putText(image,"3",(1181,379),cv2.FONT_HERSHEY_PLAIN,3,(0,0,255),5)
cv2.circle(image,(1180,436),12,(0,255,255),-1)
cv2.circle(image,(1184 ,473),12,(0,255,255),-1)
cv2.circle(image,(1185 ,511),12,(0,255,255),-1)
cv2.circle(image,(1184 ,549),12,(0,255,255),-1)
cv2.circle(image,(1185 ,585),12,(0,255,255),-1)
cv2.circle(image,(1187 ,623),12,(0,255,255),-1)cv2.putText(image,"4",(1097,369),cv2.FONT_HERSHEY_PLAIN,3,(0,0,255),5)
cv2.circle(image,(1086,433),12,(0,255,255),-1)
cv2.circle(image,(1092 ,471),12,(0,255,255),-1)
cv2.circle(image,(1095 ,511),12,(0,255,255),-1)
cv2.circle(image,(1095 ,549),12,(0,255,255),-1)
cv2.circle(image,(1095 ,587),12,(0,255,255),-1)
cv2.circle(image,(1095 ,627),12,(0,255,255),-1)cv2.putText(image,"5",(1013,364),cv2.FONT_HERSHEY_PLAIN,3,(0,0,255),5)
cv2.circle(image,(1008,430),12,(0,255,255),-1)
cv2.circle(image,(1006 ,471),12,(0,255,255),-1)
cv2.circle(image,(1006 ,511),12,(0,255,255),-1)
cv2.circle(image, (1010 ,549),12,(0,255,255),-1)
cv2.circle(image,(1010 ,589),12,(0,255,255),-1)
cv2.circle(image,(1009 ,629),12,(0,255,255),-1)cv2.putText(image,"6",(932,359),cv2.FONT_HERSHEY_PLAIN,3,(0,0,255),5)
cv2.circle(image,(921,426),12,(0,255,255),-1)
cv2.circle(image,(922 ,471),12,(0,255,255),-1)
cv2.circle(image,(921 ,511),12,(0,255,255),-1)
cv2.circle(image,(919 ,551),12,(0,255,255),-1)
cv2.circle(image,(923 ,592),12,(0,255,255),-1)
cv2.circle(image,(920 ,637),12,(0,255,255),-1)cv2.putText(image,"7",(852,354),cv2.FONT_HERSHEY_PLAIN,3,(0,0,255),5)
cv2.circle(image,(842,425),12,(0,255,255),-1)
cv2.circle(image,(842,470),12,(0,255,255),-1)
cv2.circle(image,(846 ,507),12,(0,255,255),-1)
cv2.circle(image,(845 ,552),12,(0,255,255),-1)
cv2.circle(image,(846 ,595),12,(0,255,255),-1)
cv2.circle(image,(846 ,639),12,(0,255,255),-1)cv2.namedWindow('image')
cv2.setMouseCallback("image",Event_Lbuttondown)#相应鼠标事件
cv2.imshow("image",image)#显示图片,将矩阵空间变为图片cv2.waitKey(0)#等待键盘操作执行相应操作
cv2.destroyWindow()
【计算机视觉】pycharm自制一个吉他扒谱软件(附源码)相关推荐
- Java Swing图书管理系统桌面软件附源码
Java Swing图书管理系统桌面软件附源码,亲测可运行. 功能界面如下: 登录界面,默认账号admin密码admin 主功能界面: 添加图书功能界面: 部分源码: 完整源码下载地址: JavaSw ...
- 闲来无事,用java写了一个魔方小程序。附源码
闲来无事,用java写了一个魔方小程序.附源码 使用三维数组.相对来说还是简单.呵呵. import java.util.ArrayList; import java.util.List; impor ...
- java实现魔方_闲来无事,用java写了一个魔方小程序。附源码 | 学步园
闲来无事,用java写了一个魔方小程序.附源码 使用三维数组.相对来说还是简单.呵呵. import java.util.ArrayList; import java.util.List; impor ...
- Vue 彩色头像|一个有趣的头像生成器 附源码
前言 这是一款矢量风格的头像生成器,您可以搭配不同的素材组件,生成属于您自己的个性化头像. 介绍 您可能感兴趣的功能: 可视化组件配置栏 随机生成头像 重做/撤消 国际化 批量生成多个头像 在线体验 ...
- 手把手教你做一个数据图表生成器(附源码)...
我的需求:手动配置X轴.Y轴.图表标题等参数自动通过Pyecharts模块生成可视化的html数据图表,并将浏览器图表展示到UI界面上. [阅读全文] 制作出图表后的效果展示如下: 另外,生成后的图表 ...
- java转俯视图,如何使用纯CSS实现一个足球场的俯视图(附源码)
本篇文章给大家带来的内容是关于如何使用纯CSS实现一个足球场的俯视图(附源码) ,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 效果预览 源代码下载 https://github.c ...
- 用Python写了一个网易云音乐(附源码、视频教程)
今天给大家分享一个实战项目,用Python整个网易云出来,实现音乐自由!文末附本项目源码以及视频教程! 这一次,咱们来玩点花活,整个网易云出来,实现音乐自由! 环境 Python3.6.8 PyCha ...
- PYQT5+openCV项目实战:微循环仪图片、视频记录和人工对比软件(附源码)
文章目录 1.主要功能 1.1主界面说明 1.2回查记录界面说明 2.主界面功能详解 2.1 摄像头操作 2.2拍照功能 2.3保存图片 2.4录制短视频 2.5查看记录 2.6新建名称 3.子界面功 ...
- 来,一起手撸一个简版 Redis(附源码)
点击上方 视学算法,选择 设为星标 优质文章,及时送达 作者 | 凯京技术团队 来自 | my.oschina.net/keking/blog/3037372 今天主要介绍两个开源项目,然后创建应用最 ...
- 动手写一个Remoting接口测试工具(附源码下载)
基于.NET开发分布式系统,经常用到Remoting技术.在测试驱动开发流行的今天,如果针对分布式系统中的每个Remoting接口的每个方法都要写详细的测试脚本,无疑非常浪费时间.所以,我想写一个能自 ...
最新文章
- java.text.SimpleDateFormat多线程下的问题
- idea python-IDEA里如何安装Python插件打造开发环境(图文详解)
- Docker最佳实践-部署LNMP环境
- Mysql的事务事务的特征事务的隔离级别
- effective c++_【阅读笔记】Effective C++()
- QT实现单遍线框渲染
- 电视安卓和linux系统软件,安卓和LINUX系统哪种更适合网络电视机顶盒?
- java scanner类int_Java之 Scanner类
- ArcGIS 10.2中栅格数据的属性表问题
- 趣读:程序员泪流满面的20个瞬间!
- c语言课程设计模块结构图,【图片】发几个C语言课程设计源代码(恭喜自己当上技术小吧主)【东华理工大学吧】_百度贴吧...
- linux-简单进程查询
- Mysql设置允许外网访问(图文)
- mysql数据库无限分类_php+mysql数据库实现无限分类的方法
- PAT乙级(1025 反转链表)
- android获取电量的方法,Android获取电池电量和电池容量
- 2020-05-21
- 获取高匿代理ip的步骤思路(推荐使用--刚找到的方法判断是否高匿)
- orientdb实战
- 基于Redis实现查找附近的人
热门文章
- 我的世界JAVA会支持光追吗_《我的世界》RTX beta版视频体验:仿佛打破了次元壁...
- stm32F4方向+脉冲发生器
- CMake 安装升级更高版本
- 5万字 | 2020大厂面试总结,PDF供下载
- SCI期刊分区/期刊名词,看完秒懂~
- 锐捷长ping_锐捷实战系列(二) Wireshark抓包分析Ping过程
- 需要一个用于Postgres的UUID生成器?这里有两种设置方法
- 山寨版学子商城——成功上线!
- java udp 断开_java – 如何中断阻塞调用UDP socket的receive()[复制]
- 计算机组成与系统结构第五版pdf,计算机组成与系统结构1_5习题整理版.pdf