Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

opencv2で画像をぼかしてみる

More than 1 year has passed since last update.

目的

先日の記事のせいで、少し画像処理に興味が湧いてきました。
とは言え最後に数学を触ったのは高3の期末テスト...。しかも2点。
理解不能なところもありましたが、まずは触ってみようということでコードを書いてみました。

まずはインストールと画像の用意

opencv2ってのが画像処理用のモジュールらしい。ということで安直に「pip install opencv2」するも見つからないらしい。どうやらこっちが正しい模様。

$ pip install opencv-python

ぼかす画像は目の保養としてフリー素材の田舎っぽい画像を採用。

inaka.jpg

こいつをぼかしていきましょう。

コード

ではコードを書いていきます。

インポート部分+画像読み込み

main.py
import cv2

#画像を読み込む
image = cv2.imread("inaka.jpg")

(補足)BGR→RGB変換したい場合

このopencv2は、画像をBGRで表現してくるらしい。
そして、加工後の画像を保存したり、描画するためにするために使えるライブラリであるmatplotlibはRGB形式。matplotlibを使う場合、ここの違いを無視して進めるとこうなります! 笑

new_image.jpg

というわけで、BGR→RGB変換する場合はこう。今回は加工後の画像をmatplotlibに渡したりはしないので不要です。

main.py
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

ぼかす

いよいよぼかし作業に入ります。とは言ってもメソッド呼ぶだけ。

main.py
blurr_image = cv2.GaussianBlur(image, (5, 5), 0)

このGuassianBlur、引数がよくわかりませんでした。
第一引数は画像オブジェクト、第二引数はカーネルなる数値配列、第三引数は標準偏差らしいですが
私にとってはすべて宇宙語に聞こえます。ちゃんと勉強しとけばよかった。

画像を書き出す

さて出来上がった画像を書き出します。

main.py
cv2.imwrite("new_image.jpg", blurr_image)

コード最終形態

コード全体はこんな感じになりました。

main.py
import cv2

image = cv2.imread("inaka.jpg")
blurr_image = cv2.GaussianBlur(image, (5, 5), 0)
cv2.imwrite("new_image.jpg", blurr_image)

確認してみる

変わった...のか...?

new_image.jpg

GaussianBlurの引数をちょこちょこ弄ってみましたが、法則性が掴めず今日は時間も無いし断念...。

ゴリ押し突破

余談ですが目が悪すぎるくせにメガネは邪魔で嫌い、コンタクトも怖くて入れられないので
普段からすべてぼけて見えてます。そのせいで本当にぼけてくれたのか全くわかりません。
もしかしたら上の画像もちゃんとぼけてるのかもしれませんが、体感できないので繰り返しで100回ぐらい回してやろうと思いました(絶対使い方間違ってると思います)。

main.py
import cv2
image = cv2.imread("inaka.jpg")

for i in range(1,100):
    image = cv2.GaussianBlur(image, (5, 5), 0)

cv2.imwrite("new_image.jpg", image)

ちゃんとぼけてくれたような気がします。
new_image.jpg

ちなみに、これ以上繰り返し回数を増やしても劇的にボケ度がUPすることはありませんでした。
会社を辞めた後輩に詳しいやつがいたような気がするので、聞いてみようと思います。

結論

・画像のぼかしはopencv2で実現可能
・GuassianBlurの使い方がよくわからないけど泥臭くぼかし処理を繰り返したらそれっぽくなった

bow_arrow
Java、NodeJS、Python等色々やっております。日本のITリテラシを大きく引き上げ、世間に広くIT技術を広めて「自分の必要なものは自分でも作れる」、そんな世界になったらDXが進むのではないかと思っています。会社ではIT教育事業に携わっています。
https://www.comture.com/network/education.html
comture
コムチュアグループは、デジタルトランスフォーメーション(DX)時代を担う「デジタルソリューションパートナー」として、デジタル技術を活用し、お客様の経営課題解決とイノベーション推進を積極的に進めています。※各記事はすべて個人の見解であり、コムチュアグループの公式見解ではありません。
https://www.comture.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away