Pythonでいろいろやってみる

Pythonを使った画像処理や機械学習などの簡単なプログラムを載せています。

少しずつ画像がはっきりする動画

ぼやけた画像からはっきりした画像へと少しずつ変化する動画を作成します。
画像処理にはライブラリPillowを用い、ぼかし方として
①モザイク処理
Blur処理
の2つを用いて、時間と共にぼかしを弱くするGIFアニメーションを作成します。

関連記事

画像を描画しアニメーションGIFを作成する

環境
  • windows10 home
  • Anaconda 3/ jupyter notebook 5.6.0
  • Python 3.7.0
  • Pillow 5.2.0
準備

画像ファイルはフリー写真素材ぱくたそからダウンロードさせていただき、jupyter notebookファイル(***.ipynb)と同じディレクトリにファイル名'city.jpg'で保存しました。

f:id:T_A_T:20201116132342j:plain
city.jpg

①モザイク処理
モザイク処理はPillowのresizeメソッドで画像を小さくし元の大きさに戻すことで行います。縮小率が大きい程大きなモザイクとなるので、縮小率を小さくしながらモザイク処理を行いGIFアニメにしています。

コード
from PIL import Image

img = Image.open('city.jpg')  # 元画像読み出し
width, height = img.size   # サイズの取得

img_list = []   # 画像保存用リスト

# モザイク処理
for i in range(41,0,-1):
    # 縮小画像サイズを大きくしながらモザイク処理をする    
    img_r = img.resize((int(width/i), int(height/i))).resize((width, height))
    img_list.append(img_r)

#アニメーションgifファイルを作成(1フレーム200ms,ループ)
img_list[0].save('mosaic.gif', save_all=True, append_images=img_list[1:],
                   optimize=True, duration=200, loop=0) 
実行結果

f:id:T_A_T:20201116132755g:plain

Blur処理
Blurは画像をぼかす処理でぼかし半径が大きい程ぼけた画像になります。ぼかし半径を小さくしながらBlur処理を行いGIFアニメにしています。Pillowのimageモジュールに含まれるfilterメソッドとImageFilterモジュールに含まれるGaussianBlur関数を用いています。

コード
from PIL import Image, ImageFilter

img = Image.open('city.jpg')  # 元画像読み出し
width, height = img.size   # サイズの取得

img_list = []   # 画像保存用リスト

# モザイク処理
for i in range(35,0,-1):
    # Blur radius(ぼかし半径)を小さくしながらGaussianBlur処理をする
    img_r = img.filter(ImageFilter.GaussianBlur(i))
    img_list.append(img_r)

#アニメーションgifファイルを作成(1フレーム200ms,ループ)
img_list[0].save('blur.gif', save_all=True, append_images=img_list[1:],
                   optimize=True, duration=200, loop=0)  
実行結果

f:id:T_A_T:20201116133401g:plain

以下のサイトを参考にさせていただきました

Pythonの文法メモ > 【Pillow】画像の縮小拡大、切り抜き
Pythonの文法メモ > 【Pillow】ImageFilterモジュールによる画像平滑化・エッジ強調・エッジ検出

ブログランキングに参加しています

にほんブログ村 IT技術ブログへ
にほんブログ村