7,042 views
この記事は最終更新から 2686日 が経過しています。
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
アクセス数(直近7日): ※試験運用中、BOT除外簡易実装済2026-01-24: 0回 2026-01-23: 0回 2026-01-22: 0回 2026-01-21: 1回 2026-01-20: 0回 2026-01-19: 0回 2026-01-18: 0回