本記事では、画像ファイルをアニメっぽく変換する雛形コードを載せました。変換例を4つ、下記のように動画にしました。
■本プログラム
import os, glob import cv2 import numpy as np def main(): for file_path in file_path_list: # ファイルの読み出し img = cv2.imread(file_path) # 輪郭を抽出する処理 gray = cv2.cvtColor(img, cv2.COLOR_BGRA2GRAY) dst = cv2.blur(gray, (3, 3)) # ぼかす dst = cv2.Canny(dst, 50, 150, apertureSize = 3) dst = cv2.cvtColor(dst, cv2.COLOR_GRAY2BGR) # RGBに戻す for scale in scale_list: img2 = img.copy() # 減色処理 img3 = np.array(img2 / scale, dtype = np.uint8) img4 = np.array(img3 * scale, dtype = np.uint8) # アニメ画像へ変換(差分を減算処理) anime = cv2.subtract(img4, dst) # ファイルへ書き出し fine_name = os.path.splitext(os.path.basename(file_path))[0] cv2.imwrite(fine_name + '_' + str(scale) + '.jpg', anime) if __name__ == '__main__': # 複数の画像ファイルのパスをリストで取得 file_path_list = glob.glob('img/*.jpg') # 減色処理の度合い:値が大きい程にアニメ度が高くなる scale_list = [10, 20, 30, 40, 50, 60, 70, 80] main()
以上
<広告>
リンク