(97) OpenCV #2 : Sobelフィルターでエッジ抽出

投稿者: | 2018年9月17日

6,483 views

この記事は最終更新から 2209日 が経過しています。

1. やりたいこと

Pythonで OpenCVの第 2回目、今回は OpenCVの Sobel関数を使って画像のエッジ抽出をやりたい。

2. やってみる

まずは元画像を読み込み、白黒画像に変換する。

import cv2
from PIL import Image

# 対象画像をロード
img = cv2.imread("img001.jpg")

# カラー画像を白黒画像に変換
imgG = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 画像を表示
pilG = Image.fromarray(imgG)
pilG.show()

次に X方向の勾配を算出する。

# X方向の勾配を算出
sx = cv2.Sobel(imgG, cv2.CV_64F, 1, 0, ksize=3)

# 画像を表示
pltSX = Image.fromarray(sx)
pltSX.show()

次に Y方向の勾配を算出する。

# Y方向の勾配を算出
sy = cv2.Sobel(imgG, cv2.CV_64F, 0, 1, ksize=3)

# 画像を表示
pltSY = Image.fromarray(sy)
pltSY.show()

最後に X,Y両方向を合わせた画像の勾配を算出する。

import numpy as np

# 両方向合わせた勾配を算出
grad = np.sqrt(sx ** 2 + sy ** 2)

# 画像を表示
pltGr = Image.fromarray(grad)
pltGr.show()

3. 所感

ちょっとエッジ抽出には向かない画像だったかな…

4. 参考

ありがとうございます。 m(_ _)m
http://labs.eecs.tottori-u.ac.jp/sd/Member/oyamada/OpenCV/html/py_tutorials/py_imgproc/py_gradients/py_gradients.html


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です