
[ python ] クリックして選んだ矩形部分をモザイク処理したい。
概要 この記事は python を用いて,毎日の面倒な仕事を簡単にするための方法を書いています。今回は画像のモザイク処理です。
したいこと
図1のように画像の任意の箇所をモザイク処理したい。

手順
指定した画像を表示する
モザイク処理したい箇所の左上をクリックする
モザイク処理したい箇所の右下をクリックする
2 と3の処理で決まる矩形部分をモザイク処理する
ESCキーが押されるまで繰り返す
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_画像ファイル名」という名前の画像ファイルができている。
より学びたい方へ
コマンドを使い,時間のかかる仕事を自動化する方法が学べます。
Daniel J. Barrett(著)「Efficient Linuxコマンドライン」(O’Reilly Japan)
Linux/Unixユーザー,Cygwinを利用するWindowsユーザー、Mac OS Xユーザーもbashを使いますね。bash の使い方を知ることで,いつもの作業がより簡単になるでしょう。
Mokhtar Ebrahim、Andrew Mallett(著)「マスタリングLinuxシェルスクリプト 第2版」(O’Reilly Japan)
シェルスクリプトの書き方,デバッグ方法といったシェルスクリプティングの基礎から,各種ツールとの連携まで詳しく書かれています。
Cameron Newham, Bill Rosenblatt(著)「入門 bash 第3版」(O’Reilly Japan)
Python を使った単純な繰り返し作業の自動化の仕方がくわしく説明されています。
Al Sweigart(著)「退屈なことはPythonにやらせよう 第2版」(O’Reilly Japan)
[ サイトマップを見る ]