5,109 views
この記事は最終更新から 2209日 が経過しています。
1. やりたいこと
Pythonで OpenCVの第 3回目、今回は OpenCVの Canny関数を使って画像のエッジ抽出をやりたい。
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()
次に Canny法(ヒステリシス min:100, max:200)でエッジを抽出してみる。
すなわち、Canny法のパラメーターとして、
・UP方向の場合の閾値は 200
・DOWN方向の場合の閾値は 100
・100~200は ON/OFF混在のモヤモヤ区間
とするのだ。
アルゴリズムの詳細は Canny法によるエッジ検出 を参照のこと。
# Canny法でエッジ抽出 edges = cv2.Canny(imgG,100,200) # 画像を表示 pilE = Image.fromarray(edges) pilE.show()
次に Canny法(ヒステリシス min:50, max:100)でエッジを抽出してみる。
次に Canny法(ヒステリシス min:150, max:200)でエッジを抽出してみる。
最後に Canny法(ヒステリシス min:125, max:175)でエッジを抽出してみる。
3. 所感
最適な閾値は対象画像により異なるはず。
どうやって見つけるのかな?
4. 参考
ありがとうございます。 m(_ _)m
http://labs.eecs.tottori-u.ac.jp/sd/Member/oyamada/OpenCV/html/py_tutorials/py_imgproc/py_canny/py_canny.html