第一時間獲取 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編程與實戰」後臺回覆「櫻花」便可獲取
推薦閱讀
THANKS
- End -
本文分享自微信公衆號 - Python編程與實戰(GoPy1024)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。