はじめに
ブログを作成するにあたり、サムネイルの画像やコンテンツ画像を入れる際、プライバシーや著作権の関係でそのまま使用したくない画像などがありました。
画像にモザイクやぼかしを入れるWebサイトをいくつか見つけましたが、自分で画像を加工したかったので、色々と調べたところ、PythonのOpenCVを使用することで加工できることを知りました。
Pythonで画像にぼかしを入れる方法についてまとめました。
準備
画像にぼかしを入れるために、OpenCVを使用します。
Pythonの実行環境に事前にOpenCVをインストールします。
pip install opencv-python
画像にぼかしを入れるコード
# ライブラリを読み込む
import cv2
# OpenCVで画像を読み込む
img = cv2.imread(r'C:\temp\test.jpg')
# 5x5の範囲でぼかしを入れる
img_blur = cv2.blur(img, (5, 5))
# ぼかしを入れた画像を保存する
cv2.imwrite(r'C:\temp\test_blur.jpg', img_blur)
ファイル名/パスに日本語が入っていると、実行時にエラーが表示される場合があります。
実行時に下記のようなエラーが出た場合は、ファイル名/パスに日本語を含めないようにしてみてください。
Traceback (most recent call last):
File "C:\ temp\ image-Blur.py", line 10, in
img_blur = cv2.blur(img, (5, 5))
cv2.error: OpenCV(4.5.3) C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-uzca7qz1\opencv\modules\imgproc\src\box_filter.dispatch.cpp:446: error: (-215:Assertion failed) !_src.empty() in function 'cv::boxFilter'
コードの説明
「画像にぼかしを入れる」とは、画像内の1つ1つの画素に対して、その画素が持つ画素値を周辺の画素値の平均値に置き換えること、となります。
この処理を実施しているのが、cv2.blur関数となります。
- cv2.blur関数の使い方
cv2.blur(第1引数, 第2引数)
第1引数:ぼかしを入れる画像
第2引数:ぼかしの度合(1画素あたり、どれくらいの範囲で平均値を計算するかを指定する)
例1:1画素を中心に5×5画素の平均した画素値に変換する
cv2.blur(img, (5, 5))
例2:1画素を中心に20×20画素の平均した画素値に変換する
cv2.blur(img, (20, 20))
第2引数の値が大きいほどぼかしの度合が強くなります。
画像にぼかしを入れた結果
ぼかし | 画像 |
元の画像 | |
ぼかし5×5 cv2.blur(img, (5, 5)) |
|
ぼかし10×10 cv2.blur(img, (10, 10)) |
|
ぼかし20×20 cv2.blur(img, (20, 20)) |
|
ぼかし40×40 cv2.blur(img, (40, 40)) |
コメント