武大學生用Python敲出櫻花開放 | 附源碼

點擊「 Python編程與實戰 」,選擇「置頂公衆號」

第一時間獲取 Python 技術乾貨!python



今年的武漢大學沒有了往年的人山人海,可是美麗的櫻花依然在春天裏獨自綻開。web


爲此,武大開通了#櫻花雲直播# ,3月16日-3月25日,天天 10:00-16:00。相約武大官博,天天看不一樣地點的櫻花編程


同時武大信管院的朱永春同窗,用python敲出櫻花開放,引起熱搜。數組


效果見下圖視頻:服務器



武大微博後來還開源了代碼:微信


這樣咱們也能在本身的電腦上實現櫻花開放全過程🌸app

<<  滑動查看下一張圖片  >>框架


圖中cv_二、cv_三、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 = 10

font = 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 * 256
drawObj.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'): # 判斷圖片後綴是不是.png
item = path + '/' + item
img = cv2.imread(item) # 使用opencv讀取圖像,直接返回numpy.ndarray 對象,通道順序爲BGR ,注意是BGR,通道值默認範圍0-255。
video.write(img) # 把圖片寫進視頻

video.release() # 釋放


代碼千萬行,愛你當首行!


無數個「武漢加油」匯聚在一塊兒,每一個字都是一個像素點,爲你敲出一朵櫻花的延時開放🌸


看一朵花開,等花開成海,和武大櫻花一塊兒爲武漢加油!



整理:凹凸數據

參考來源:

武大微博 https://m.weibo.cn/status/4483892952561309?

Python編程時光:《情人節來了,教你個用 Python 表白的技巧》


關注公衆號「Python編程與實戰」後臺回覆「櫻花」便可獲取



推薦閱讀


Python 異步 ASGI 服務器及框架

Python爬蟲偷懶神器 — 快速構造請求頭!




THANKS

- End -



點個「在看」必升職加薪喔

本文分享自微信公衆號 - Python編程與實戰(GoPy1024)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索