検出した目にモザイクを入れるプログラム Python

PythonのOpenCVを使って検出した目の位置にモザイクを入れるプログラムを紹介します。

顔と目の検出はこちらOpenCVを使った顔と目の検出方法 Pythonの投稿で書いているので、この投稿ではモザイクのプログラムをメインに紹介します。

PythonプログラムはColaboratoryで実行しています。

目次

・顔と目の検出と目にモザイクを入れるプログラム

・モザイクの検証


顔と目の検出と目にモザイクを入れるプログラム

モザイク処理の34~38行目のプログラムをメインに説明します。
実行結果は下にあります。

34行目は18行目で切り取った顔画像のデータ(face)から20行目で検出した目の座標を使って目を切り取り、変数eyeに目の画像データを入れています。

35行目は切り取った目の画像データから高さと幅(height,width)のデータを取り出します。

36行目は目を縮小しています。ここの(7,7)の値が小さいほどモザイクが濃くなり、大きいほど薄くなります

37行目は35行目で取り出した高さと幅(height,width)のデータとcv2.INTER_NEARESTを用いて、元の画像サイズに拡大します。
目の画像を縮小してから、元のサイズに拡大することでモザイクのようになります。

INTER_NEAREST 最近傍補間という意味です。

最近傍補間の意味  については西住工房さんの【画像処理】最近傍補間法の原理・計算式 | 西住工房 」 この投稿で紹介されています。

↓実行結果↓


モザイクの検証

 cv2.resize(eye,(7,7))の(7,7)の値を小さくすることでモザイクが濃くなり、逆に大きくすることで薄くなるので、その値が(1,1)の場合と(10,10)の場合の比較をします。

●cv2.resize(eye,(1,1))の場合

(1,1)の場合はモザイクではなく、黒い四角を目に貼りつけた画像になります。

●cv2.resize(eye,(10,10))の場合

(10,10)の場合はモザイクが薄くなり、ぼんやりですがどんな形の目をしているのかわかります。