opencv python 生成画布_用Python做自己的2020专属Flag动图
2020年的開頭并不順利,有不少朋友希望能夠重啟2020。然而時光不可倒流,我們都應該學會積極的向前看。
我們可以給自己的2020年立下Flag,或者說給自己在這剩下的11個月里定下小目標,并不斷為之努力。
今天我們就用這萬能的Python來做自己的2020專屬Flag動圖。整個動圖制作可以分為如下幾步,將愿望寫入圖片,循環播放圖片形成gif的效果或者直接合成圖片生成動圖。
圖片制作
我找了一張符合主題的背景圖,簡單而不失優雅的中國紅,福氣滿滿的剪紙畫。
以此圖為背景,在中央空白處寫下自己的愿望,即給圖片添加文字,這里用到了pillow庫來新建畫布,并描繪出黑色字體。
def add_font(text,i):font=ImageFont.truetype('simhei.ttf', 80) img=Image.open('a.jpg')draw=ImageDraw.Draw(img) draw.text((110,110),text,(0,0,0),font=font)img.save('pic/{}.png'.format(i))其文本位置和大小以及字體都可以在代碼中進行控制,整體效果如下,
圖片輪播
想要達到gif的效果,最直接的想法便是將圖片不斷地播放,這里我們用到了另外一個圖像處理的常用庫opencv,cv2.waitKey()函數在參數不為零的時候可以和循環結合產生動態畫面,即圖片輪播。
def pic_cycle():path="pic"filenames=os.listdir(path)img_iter=cycle([cv2.imread(os.sep.join([path, x])) for x in filenames])while 1:cv2.imshow('window title', next(img_iter))cv2.waitKey(500)通過itertools.cycle生成一個無限循環的迭代器,每一次迭代都輸出下一張圖片,通過更改cv2.waitKey的參數,可以調整圖片輪播的速度。
圖片合成
如果不但想要生成動圖的效果,還想要直接以gif的形式保存下來便可以用到imageio庫,這個庫提供了多張圖片合成gif動圖的函數mimsave,可以通過調節參數fps調節圖片輪播的速度。
def make_gif():gif_images=[]img_paths=os.listdir('pic')img_paths=[os.sep.join(['pic',i]) for i in img_paths]for path in img_paths:gif_images.append(imageio.imread(path))imageio.mimsave("a.gif",gif_images,fps=2)效果展示
我在代碼中寫入了自己的Flag, 你們也來動手制作吧!
總結
以上是生活随笔為你收集整理的opencv python 生成画布_用Python做自己的2020专属Flag动图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: asp.net学习之DataList控件
- 下一篇: lopa分析_HAZOP : 保护层分析