武汉大学一学生,用python敲出樱花开放 | 附源码
今年的武漢大學沒有了往年的人山人海,但是美麗的櫻花依然在春天里獨自綻放。
(圖源武漢大學微博)
為此,武大開通了#櫻花云直播# ,3月16日-3月25日,每天 10:00-16:00。相約武大官博,每天看不同地點的櫻花
同時武大信管院的朱永春同學,用python敲出櫻花開放,引發熱搜。
效果見下圖視頻:
武大微博后來還開源了代碼:
這樣我們也能在自己的電腦上實現櫻花開放全過程????
<<? 滑動查看下一張圖片? >>
圖中cv_2、cv_3、cv_4依次執行即可
再來講講此處的原理(引用自 Python編程時光)。
事實上,每一張圖片都是由一個一個的像素點所組成的。而每個像素點,都有自己的顏色,其顏色可以用一個數組來表示:(a,b,c),其中每位數的取值范圍都是 0-255。
比如(0,0,0)代表黑色,(255,255,255)代表白色。
當像素點足夠多的時候,這張照片就是我們所說的高清照片。
而如果當像素點太少,我們的肉眼就能感知到明顯的鋸齒感。
首先,使用 opencv 的 cv2.imwrite() 函數讀寫,再保存為’.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)寫個for循環生成數據,要給這些字加上相應的顏色字體,寫入創建的畫布中。
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')最后將圖片寫進視頻,導出即可。
def picvideo(path, size):# path = r'C:\Users\Administrator\Desktop\1\huaixiao\\'#文件路徑filelist = os.listdir(path) # 獲取該目錄下的所有文件名filelist = resort(filelist)'''fps:幀率:1秒鐘有n張圖片寫進去[控制一張圖片停留5秒鐘,那就是幀率為1,重復播放這張圖片5次]如果文件夾下有50張 534*300的圖片,這里設置1秒鐘播放5張,那么這個視頻的時長就是10秒'''fps = 24# size = (591,705) #圖片的分辨率片file_path = 'video/new.mp4' # 導出路徑fourcc = cv2.VideoWriter_fourcc('D', 'I', 'V', 'X') # 不同視頻編碼對應不同視頻格式(例:'I','4','2','0' 對應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 對象,通道順序為BGR ,注意是BGR,通道值默認范圍0-255。video.write(img) # 把圖片寫進視頻video.release() # 釋放代碼千萬行,愛你當首行!
無數個“武漢加油”匯聚在一起,每個字都是一個像素點,為你敲出一朵櫻花的延時開放????
看一朵花開,等花開成海,和武大櫻花一起為武漢加油!
作者:武漢大學 朱永春
整理:朱小五,公眾號「凹凸數據」
代碼:
https://pan.baidu.com/s/1anJ4MOg_yQzkLf43q1G58Q
提取碼:1a20
參考來源:
武大微博 https://m.weibo.cn/status/4483892952561309?
Python編程時光:《情人節來了,教你個用 Python 表白的技巧》
-END-
猜你喜歡
C++來了,詳細知識點思維導圖!
一文帶你學C語言,詳細知識點思維導圖!
本科、碩士、博士的區別(終極版,太形象了!)
?最 后??
?若覺得文章不錯,轉發分享,也是我們繼續更新的動力。
5T資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,PCB、FPGA、DSP、labview、單片機、等等!
在公眾號內回復「更多資源」,即可免費獲取,期待你的關注~
長按識別圖中二維碼關注
總結
以上是生活随笔為你收集整理的武汉大学一学生,用python敲出樱花开放 | 附源码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【绝密】泰坦导弹制导计算机内部!
- 下一篇: TIOBE 11月编程语言排行:Java