Engineerの研鑽

メインはプログラミング系ブログ(本の要約とかもします)

質問はCONTACTやコメントでお願い致します。

【コピペでできるPython】画像にモザイクをかけてみよう

f:id:yukiyukiponsu:20190506221210p:plain

こんにちは、ゆきぽんずです。

 

4月から入る会社に実際に赴き、インターンをしている今日この頃ですが、やはり社会人のように8時間働くというのは色々考えるところがあります。このままではダメだと肌で感じられたので、これからブログ毎日更新していこうと切に考えているところです。

 

さてさて余談が多くなりましたが、今日はPythonのresizeを使って画像にモザイクをかけていきます。

 

とても参考になるサイトがあったのでリンク貼っておきます。

https://note.nkmk.me/python-opencv-mosaic/

 

それでは実際のソースコードをどうぞ!

ソースコード

#モザイク掛け機能
import cv2
Imagefile = "C://python//BlogMosaicPython//Image//lena.jpg"
######## 画面の一部をモザイク処理 ###################
MOSAIC = cv2.imread(Imagefile, 1)

#画像に対してモザイクをかける
def mosaic(src, ratio=0.1):
    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)

#モザイクの範囲を決定
def mosaic_area(img, x, y, width, height, ratio=0.1):
    dst = img.copy()
    dst[y:y + height, x:x + width] = mosaic(dst[y:y + height, x:x + width], ratio)
    return dst

#特定の位置に特定の大きさのモザイクをかける
dst_area = mosaic_area(MOSAIC, 0, 0, 150, 150)
cv2.imwrite("../Image/mosaic.jpg", dst_area)
######################################

いつも通り短いですね。

 

少し補足をしておくと、ratioは縮小率でしてratioの大きさでモザイクの粗さを表現できます。また、interpolation=cv2.INTER_NEARESTは画像をリサイズするときに、画像を滑らかにしないために行うものです。

実行結果

実行結果

わぉ。きれいな(?)モザイクですね。

 

これだけだと味気ないので、mosaic_area(MOSAIC, 0, 0, 150, 150)の部分をmosaic_area(MOSAIC, 0, 0, 100, 100)に変化させた結果も載せておきます。

見ていただくとわかるように、モザイクの範囲が小さくなりましたね。まぁモザイクをかける範囲を小さくしているので、当たり前ですが(;^ω^)

 

さてさて明日は何を書くか決めていませんが、きっとpythonの基本的なことについての記事になると思います。

 

後、10記事くらいpythonの基本的な記事をあげたら以前行った機械学習についての詳しい記事を書こうかなと一人検討中です。

 

今日もブログを読んでくださりありがとうございます。

 

少しでも皆さんの参考になれば幸いです。

 

それではまた明日!