Macでモザイク加工を行う方法

今回はMacで画像にモザイクをかける方法を見ていきたい。ネットに載せたいけど、ある部分にはモザイクをかけておきたい!っていう場合ありますよね。そんな時に使える方法です。これいいなあって思う方法があればサクッと試してみるといいかもしれません。では、いってみましょう。

Macでモザイク加工する方法

Skitchでモザイク加工する

一番簡単な方法だと思います。Skitchには選択した範囲にモザイクを適用する機能がついているので、それを使います。Skitchを開いたら左にあるモザイクツールを選択 、後はモザイクにしたい部分を加工だけです。

 

Skitchはさっと画像加工するのにかなり便利だから、Macを使っていてまだ使っていない人はインストールして使ってみるといいと思います。起動も早くて下のボタンをドラッグするだけで簡単に他のアプリにアップロードできる。以前にMacに入れるのにおすすめのアプリを紹介したけど、その中にSkitchも入っていますね。他に何か便利なのないかなー?って思ったら参考にしてみてください。

プレビューを使ってモザイクっぽいものをかける

Macにデフォルトで備わっているプレビューでは残念ながらモザイクをかける機能は備わっていません。ただ、色味を調整してそれっぽいものを作るものはできますね。

色と不透明度を調整するぐらいしかできなそうだけど、まあ使えないこともないかな・・・?ただちょっとクオリティが低すぎる・・・

Photoshopでモザイク加工する

まあ、Photoshopを使えば当然のようにモザイクをかけることができますよね。フィルターにモザイクがあるからそれを使えば一発です。モザイクの大きさを細かく調整できるのがやっぱり流石といったところですよね。

Photoshopは有料だから、奇跡的に持っている人はモザイク加工に使ってみてもいいかもしれない。だけど、サクッとモザイクをかけたい時にPhotoshop立ち上げるのは面倒ですね。

プログラムを使ってモザイクをかける

プログラムを使って画像にモザイクをかけてしまう方法もありますよね。プログラムを使えば、特定の範囲に自動でモザイクをかけたりすることができるから、もうモザイクをドラッグしてかけるのも面倒だ・・・っていう場合にはモザイクをかけるプログラムを作ってしまえばいいかもしれない。

この記事でちょっとやったけど、人物の顔を認識して自動でその部分にモザイクをかけることもできる。

これをもっと簡単に人物の顔にモザイクをかけられるようにしたい。

ドラッグで実行できるように改造する

以前プログラムを書いてそれを実行するとその画像の人物にモザイクがかかるっていうのをやったけど、プログラム実行するのがもう面倒。Automatorと組み合わせたらもっと簡単に、ドラッグ&ドロップだけでできないかなーとか思ったからちょっとやってみる。

ちなみに前のブログラムはこれ。Pythonです。

import cv2
 
face_cascade = cv2.CascadeClassifier('/Users/〇〇Desktop/haarcascade_frontalface_default.xml') 
src = cv2.imread('/Users/〇〇/Downloads/girl.jpg')
img_gray = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(img_gray)
 
print(faces)
for (x, y, w, h) in faces:
    # cv2.rectangle(src, (x, y), (x + w, y+h), (0, 0, 200), 3)
    small = cv2.resize(src[y:y+h, x:x+w], None, fx=0.08, fy=0.08, interpolation=cv2.INTER_NEAREST)
    src[y:y+h, x:x+w] = cv2.resize(small, (w, h), interpolation=cv2.INTER_NEAREST)

cv2.imwrite("/Users/〇〇/Desktop/output.png", src)

Automatorからアプリケーション作って、シェルスクリプトからこのファイル改造して良い感じに実行すればなんかそれっぽいことできそうな気がする。ちょっとだけ適当にいじってコマンドライン引数で画像を受け取れるようにしよう。

import cv2
import sys

try:    
    src = cv2.imread(sys.argv[1])
except:
    exit()

face_cascade = cv2.CascadeClassifier('/Users/yutaro/Desktop/haarcascade_frontalface_default.xml') 
img_gray = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(img_gray)
 
for (x, y, w, h) in faces:
    # cv2.rectangle(src, (x, y), (x + w, y+h), (0, 0, 200), 3)
    small = cv2.resize(src[y:y+h, x:x+w], None, fx=0.08, fy=0.08, interpolation=cv2.INTER_NEAREST)
    src[y:y+h, x:x+w] = cv2.resize(small, (w, h), interpolation=cv2.INTER_NEAREST)

cv2.imwrite("/Users/yutaro/Desktop/output.png", src)

Automatorの方では受け取った画像をこのファイルに渡して実行すれば実行できるはず。アプリケーションを選んでアプリケーションを作る。

使うアクションは[シェルスクリプトを実行]だけ。[指定されたFinder項目を取得]っていうのはAutomatorで試したいから入れているだけです。シェルスクリプトの内容は以下。

// pythonだけだと、Automatorで実行するPythonがターミナルで実行するものと違うようでうまくいかなかった。
$ /Users/〇〇/.pyenv/shims/python /Users/〇〇/desktop/mozaic.py $@

モザイク加工するファイルを指定して引数として$@aっていうのを入れています。これがファイルの変数になってくれるようですね。Automatorの入力の引き渡し方法は[引数として]を設定しておきました。動くのが確認できたら、[指定されたFinder項目を取得]っていうのは消して保存です。

保存したアプリケーションが実際に使えるかどうか試してみましょう。作成したアプリケーションのアイコンにモザイク加工したい人物の画像をドラッグ&ドロップ!

すると顔がモザイク加工されたものが作られました。

ちなみに、ドラッグ&ドロップした元画像はこれです。

良い感じにモザイク加工されています。ファイル枚や保存場所、モザイクの大きさなんかはコードをいじれば変えることができますね。作ったアプリケーションは、デスクトップなんかに置いておいて簡単にドラッグ&ドロップできるようにしておくと便利でいいかもしれない。

まとめ

最後ドラッグしたら自動で人物の顔にモザイクをかけるといったことをしたけど、モザイクかけるだけなら単純にSkitchのモザイクツール使うのが簡単で良いと思います。プレビューは微妙だし、Photoshopは有料になってしまいますからね。ただ、もうちょっとこういうモザイクにしたいんだよなあ・・・っていう思いがあったらプログラム書いてやってみるっていうのもいいかもしれないね。

Twitterでフォローしよう

おすすめの記事