hiyoko-programingの日記

プログラミングを勉強したてのひよっ子。   エンジニア目指して勉強中。

画像にモザイクをかける

◉モザイクをかける仕組み。

画像にモザイクをかけるには、元の画像を一度「縮小」する。

そして、縮小した画像を「拡大」する。

拡大するときに、デジタル画像はできるだけ美しくしようと「補間」という

仕事をするが、ここで、補間されてしまうと元の画像に戻ってしまうだけ。

なので、あえて「補間しない」ようにするのがポイント。

 

◉モザイクをかける方法

cv2.resize(画像, 拡大・縮小したときの大きさ, 補間の方法)

 ⚫︎画像:大きさを変化させたい画像

 ⚫︎拡大・縮小したときの大きさ:横と縦のサイズを指定(px)

 ⚫︎補間の方法:補間させたくないので「cv2.INTER_NEAREST」を使用

 

<画像をモザイクをかけるPythonコード例>

import sys

import cv2

if len(sys.argv)<2:

    print('表示したいファイル名を指定してください。')

    sys.exit()

file = sys.argv[1]

try:

    img = cv2.imread( ' file ' ) 

    if img is None:

         raise ValueError('ファイルが見つかりません')

    MOSAIC_SCALE = 0.1

    img_height = img.shape[0]   #元画像の縦サイズ

    img_width = img.shape[1]   #元画像の横サイズ

    mosaic = cv2.resize(img, (round(img_width * MOSAIC_SCALE),round(img_height * MOSAIC_SCALE)), interpolation = cv2.INTER_NEAREST)

   mosaic = cv2.resize(mosaic,(img_width, img_height ), interpolation = cv2.INTER_NEAREST)

    cv2.imshow(file, mosaic)

    cv2.waitKey(0)

    cv2.destroyAllWindows()

except ValueError as e:

    print(e)

except:

    import traceback

    traceback.print_exc()

 

MOSAIC_SCALEという定数。

roundという組み込み関数。計算結果の小数点を四捨五入し整数に丸める関数。