在宅勤務他で暇なので
ドット絵クイズを作ってみました。
問題の動画はこちら
ドット絵を作る
ソースコードはこちら

やっていることは
画像を取り込んで
リサイズ加工し
ドット絵加工しています。
モザイクの粒度を変えれば、
もう少し判別できる形になります。
小さくすればするほど荒く
大きくすると細かくなります。
ぜひ挑戦してみてください。
分かった秒数を
コメント欄に是非!!!
それでは
ドット絵クイズを作ってみました。
問題の動画はこちら
ドット絵を作る
ソースコードはこちら
import cv2 import numpy as np import matplotlib.pyplot as plt from PIL import Image, ImageDraw %matplotlib inline def resize1(img): height, width = img.shape[:2] rate = 720 / height n_width = round(width * rate) size = (n_width,720) return cv2.resize(img, size) def resize2(img): height, width = img.shape[:2] rate = 256 / height n_width = round(width * rate) size = (n_width,256) return cv2.resize(img, size) def center_img(img): img2 = np.zeros((720, 1280, 3), np.uint8) height, width = img.shape[:2] img2[0:height, (1280-width)//2:(1280-width)//2+width] = img return img2 def sub_color(src, K): Z = src.reshape((-1, 3)) Z = np.float32(Z) criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0) ret, label, center = cv2.kmeans( Z, K, None, criteria, 10, cv2.KMEANS_RANDOM_CENTERS) center = np.uint8(center) res = center[label.flatten()] return res.reshape((src.shape)) def anime_filter(img, K): gray = cv2.cvtColor(img, cv2.COLOR_BGRA2GRAY) edge = cv2.blur(gray, (3, 3)) edge = cv2.Canny(edge, 50, 150, apertureSize=3) edge = cv2.cvtColor(edge, cv2.COLOR_GRAY2BGR) img = sub_color(img, K) return cv2.subtract(img, edge) def mosaic(src, ratio=0.25): small = cv2.resize(src, None, fx=ratio, fy=ratio, interpolation=cv2.INTER_NEAREST) return cv2.resize(small, src.shape[:2][::-1], interpolation=cv2.INTER_NEAREST) input_path = 'フォルダのパス' file_name = 'ファイル名' input_file_path = input_path + file_name # ファイル読み込み img = cv2.imread(input_file_path, cv2.IMREAD_COLOR) # リサイズ img = resize1(img) # アニメ化 img = anime_filter(img, 16) # モザイク処理(img,粒度) img = mosaic(img,0.01) # リサイズ2 img = resize2(img) img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) fig, ax = plt.subplots(figsize=(16,9)) ax.imshow(img) plt.show()

やっていることは
画像を取り込んで
リサイズ加工し
ドット絵加工しています。
モザイクの粒度を変えれば、
もう少し判別できる形になります。
小さくすればするほど荒く
大きくすると細かくなります。
ぜひ挑戦してみてください。
分かった秒数を
コメント欄に是非!!!
それでは
コメントする