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