武汉大学一学生,用python敲出樱花开放 | 附源码
今年的武漢大學(xué)沒有了往年的人山人海,但是美麗的櫻花依然在春天里獨(dú)自綻放。
(圖源武漢大學(xué)微博)
為此,武大開通了#櫻花云直播# ,3月16日-3月25日,每天 10:00-16:00。相約武大官博,每天看不同地點(diǎn)的櫻花
同時(shí)武大信管院的朱永春同學(xué),用python敲出櫻花開放,引發(fā)熱搜。
效果見下圖視頻:
武大微博后來還開源了代碼:
這樣我們也能在自己的電腦上實(shí)現(xiàn)櫻花開放全過程????
<<? 滑動(dòng)查看下一張圖片? >>
圖中cv_2、cv_3、cv_4依次執(zhí)行即可
再來講講此處的原理(引用自 Python編程時(shí)光)。
事實(shí)上,每一張圖片都是由一個(gè)一個(gè)的像素點(diǎn)所組成的。而每個(gè)像素點(diǎn),都有自己的顏色,其顏色可以用一個(gè)數(shù)組來表示:(a,b,c),其中每位數(shù)的取值范圍都是 0-255。
比如(0,0,0)代表黑色,(255,255,255)代表白色。
當(dāng)像素點(diǎn)足夠多的時(shí)候,這張照片就是我們所說的高清照片。
而如果當(dāng)像素點(diǎn)太少,我們的肉眼就能感知到明顯的鋸齒感。
首先,使用 opencv 的 cv2.imwrite() 函數(shù)讀寫,再保存為’.jpeg’后綴的圖像
cv2.imwrite("pic/frame%d.jpg" % count, image) # save frame as JPEG file新建一張畫布,再選擇字體和字體大小。
blank = Image.new("RGB", [len(img[0]), len(img)], "white") drawObj = ImageDraw.Draw(blank)n = 10font = ImageFont.truetype('C:/Windows/Fonts/Microsoft YaHei UI/msyhbd.ttc', size=n - 1)寫個(gè)for循環(huán)生成數(shù)據(jù),要給這些字加上相應(yīng)的顏色字體,寫入創(chuàng)建的畫布中。
for i in range(0, len(img), n):for j in range(0, len(img[i]), n):text = '武漢加油'drawObj.ink = img[i][j][0] + img[i][j][1] * 256 + img[i][j][2] * 256 * 256drawObj.text([j, i], text[int(j / n) % len(text)], font=font)print('完成處理——', i, j)blank.save('new/new_' + pic, 'jpeg')最后將圖片寫進(jìn)視頻,導(dǎo)出即可。
def picvideo(path, size):# path = r'C:\Users\Administrator\Desktop\1\huaixiao\\'#文件路徑filelist = os.listdir(path) # 獲取該目錄下的所有文件名filelist = resort(filelist)'''fps:幀率:1秒鐘有n張圖片寫進(jìn)去[控制一張圖片停留5秒鐘,那就是幀率為1,重復(fù)播放這張圖片5次]如果文件夾下有50張 534*300的圖片,這里設(shè)置1秒鐘播放5張,那么這個(gè)視頻的時(shí)長就是10秒'''fps = 24# size = (591,705) #圖片的分辨率片file_path = 'video/new.mp4' # 導(dǎo)出路徑fourcc = cv2.VideoWriter_fourcc('D', 'I', 'V', 'X') # 不同視頻編碼對(duì)應(yīng)不同視頻格式(例:'I','4','2','0' 對(duì)應(yīng)avi格式)video = cv2.VideoWriter(file_path, fourcc, fps, size)for item in filelist:if item.endswith('.jpg'): # 判斷圖片后綴是否是.pngitem = path + '/' + itemimg = cv2.imread(item) # 使用opencv讀取圖像,直接返回numpy.ndarray 對(duì)象,通道順序?yàn)锽GR ,注意是BGR,通道值默認(rèn)范圍0-255。video.write(img) # 把圖片寫進(jìn)視頻video.release() # 釋放代碼千萬行,愛你當(dāng)首行!
無數(shù)個(gè)“武漢加油”匯聚在一起,每個(gè)字都是一個(gè)像素點(diǎn),為你敲出一朵櫻花的延時(shí)開放????
看一朵花開,等花開成海,和武大櫻花一起為武漢加油!
作者:武漢大學(xué) 朱永春
整理:朱小五,公眾號(hào)「凹凸數(shù)據(jù)」
代碼:
https://pan.baidu.com/s/1anJ4MOg_yQzkLf43q1G58Q
提取碼:1a20
參考來源:
武大微博 https://m.weibo.cn/status/4483892952561309?
Python編程時(shí)光:《情人節(jié)來了,教你個(gè)用 Python 表白的技巧》
-END-
猜你喜歡
C++來了,詳細(xì)知識(shí)點(diǎn)思維導(dǎo)圖!
一文帶你學(xué)C語言,詳細(xì)知識(shí)點(diǎn)思維導(dǎo)圖!
本科、碩士、博士的區(qū)別(終極版,太形象了!)
?最 后??
?若覺得文章不錯(cuò),轉(zhuǎn)發(fā)分享,也是我們繼續(xù)更新的動(dòng)力。
5T資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,PCB、FPGA、DSP、labview、單片機(jī)、等等!
在公眾號(hào)內(nèi)回復(fù)「更多資源」,即可免費(fèi)獲取,期待你的關(guān)注~
長按識(shí)別圖中二維碼關(guān)注
總結(jié)
以上是生活随笔為你收集整理的武汉大学一学生,用python敲出樱花开放 | 附源码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【绝密】泰坦导弹制导计算机内部!
- 下一篇: 微软被曝解散整个AI风险评估团队