この記事ではpython&openCVを使って、指定画像にモザイク処理する方法をご紹介していきます。
以下の2パターンに分けてご紹介していきます。
〇画像全体にモザイク処理
〇指定した領域にのみモザイク処理
基本的にはサンプルコードをコピーするだけで実行可能です。
ぜひあなたもトライしてみましょう。
※python実行環境とopenCVというライブラリが必要です。インストール方法から知りたい方はまずは以下からご覧ください。
完成イメージ紹介
今回は以前エクセルスキル紹介で使用した以下の画像にモザイク処理を施していきます。
まずはじめに完成画像イメージをご紹介していきます。
〇画像全体にモザイク処理を実施した場合
(なんかアラビア文字みたいになりましたね。笑)
〇指定した領域にのみモザイク処理を実施した場合
モザイク実施領域は簡単に変更できるようにコードを記述していますので、モザイク箇所はあなたの状況に応じて自由に変更可能です。
完成イメージができたところで、実際のコーディングに移っていきましょう。
画像全体にモザイク処理するサンプルコード
早速ですが、以下が画像全体にモザイク処理を行うサンプルコードです。
import cv2
#全体モザイク
mozaikudo=5
pic1=cv2.imread('sample.JPG',cv2.IMREAD_COLOR)
h,w=pic1.shape[:2]
pic2=cv2.resize(pic1,(int(w/mozaikudo),int(h/mozaikudo)))
pic3=cv2.resize(pic2,(int(w),int(h)))
cv2.imwrite('mozaiku1.jpg',pic3)
モザイク処理を施される画像は、このpythonコードを実行するフォルダの中に入っていることを想定して書いています。
(sample.JPGとして保存しています。)
完成画像はmozaiku1.jpgとして出力されます。
基本的にやっていることとしては、
①一度画像を小さくリサイズして画素数を削減
②元の大きさに戻す
たったのこれだけです。
簡単ですね。
また、途中で出てきたmozaikudo=5という記述があると思いますが、この数字を大きくするとよりモザイク度合が高まります。
あなたの状況に応じて適宜変更してみましょう。
指定した領域にのみモザイク処理するサンプルコード
次は指定した領域だけにモザイク処理する方法です。
import cv2
#全体モザイク
mozaikudo=5
start_h=150
start_w=50
m_height=200
m_width=700
pic1=cv2.imread('sample.JPG',cv2.IMREAD_COLOR)
pic2=cv2.resize(pic1[start_h:start_h+m_height,start_w:start_w+m_width],(int(m_width/mozaikudo),int(m_height/mozaikudo)))
pic1[start_h:start_h+m_height,start_w:start_w+m_width]=cv2.resize(pic2,(int(m_width),int(m_height)))
cv2.imwrite('mozaiku2.jpg',pic1)
先ほど同様に、モザイク処理を施される画像は、このpythonコードを実行するフォルダの中に入っていることを想定して書いています。
(sample.JPGとして保存しています。)
完成画像はmozaiku2.jpgとして出力されます。
基本的に先ほど全体に行った処理を指定した領域に限定して実施しているだけです。
また、サンプルコード中に出てきた変数は以下の情報を入力するようにしています。
適宜変更して実行してみましょう。
※うまく処理できない場合は、画像サイズを超えた指定を行っている可能性があります。
まずは小さい数値から試してみましょう。
おわりに
というわけで今回は、python&openCVを使って、画像にモザイク処理を施す方法をご紹介しました。
画像加工の際に、ぜひご活用ください。
このように、私のブログでは様々なプログラミングスキルを紹介しています。
今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。
⇒興味をもった方は【ヒガサラ】で検索してみてください。
確実にスキルアップできるはずです。
最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
にほんブログ村
それではまた!
Follow @HigashiSalary
コメント