Pythonを使って、画像にぼかしを入れたい

Python

はじめに

ブログを作成するにあたり、サムネイルの画像やコンテンツ画像を入れる際、プライバシーや著作権の関係でそのまま使用したくない画像などがありました。

画像にモザイクやぼかしを入れる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))

 

コメント

タイトルとURLをコピーしました