見出し画像

[ python ] クリックして選んだ矩形部分をモザイク処理したい。

概要 この記事は python を用いて,毎日の面倒な仕事を簡単にするための方法を書いています。今回は画像のモザイク処理です。

したいこと

図1のように画像の任意の箇所をモザイク処理したい。

図1. 人物がモザイク処理されている

手順

  1. 指定した画像を表示する

  2. モザイク処理したい箇所の左上をクリックする

  3. モザイク処理したい箇所の右下をクリックする

  4. 2 と3の処理で決まる矩形部分をモザイク処理する

  5. ESCキーが押されるまで繰り返す

  6. ESCキーが押されたら,モザイク処理を施したファイルを出力する

コード

import cv2import numpy as npimport sys

file = sys.argv[1]img = cv2.imread(file)

ix, iy = -1, -1

def draw_rectangle(event, x, y, flags, param):global ix, iy, img

if event == cv2.EVENT_LBUTTONDOWN:
    ix, iy = x, y

elif event == cv2.EVENT_LBUTTONUP:

    x1, y1 = min(ix, x), min(iy, y)
    x2, y2 = max(ix, x), max(iy, y)

    roi = img[y1:y2, x1:x2]
    blurred_roi = cv2.GaussianBlur(roi, (25, 25), 0)
    img[y1:y2, x1:x2] = blurred_roi

    cv2.imwrite('blurred_'+file, img)

cv2.namedWindow('image')
cv2.setMouseCallback('image', draw_rectangle)

while(1):
    cv2.imshow('image', img)
    k = cv2.waitKey(1) & 0xFF
    if k == 27:
        break

cv2.destroyAllWindows()

実行

python3 pyBlur.py 画像ファイル名

コードに pyBlur.py という名前をつけた場合。画像ファイル名を指定して実行する。esc キーを押すと,カレントディレクトリに「blurred_画像ファイル名」という名前の画像ファイルができている。

より学びたい方へ

コマンドを使い,時間のかかる仕事を自動化する方法が学べます。

Linux/Unixユーザー,Cygwinを利用するWindowsユーザー、Mac OS Xユーザーもbashを使いますね。bash の使い方を知ることで,いつもの作業がより簡単になるでしょう。

シェルスクリプトの書き方,デバッグ方法といったシェルスクリプティングの基礎から,各種ツールとの連携まで詳しく書かれています。

Python を使った単純な繰り返し作業の自動化の仕方がくわしく説明されています。

[ サイトマップを見る ]

いいなと思ったら応援しよう!