【Python/OpenCV】Cannyアルゴリズムで輪郭検出(エッジ抽出)

Python版OpenCV(cv2.Canny)でCannyアルゴリズムを実装し、エッジ検出する方法をソースコード付きで解説します。

【Python】Cannyアルゴリズムの実装

Cannyアルゴリズムとは、画像から輪郭を取り出すアルゴリズムです。
事で解説しています。

原理については下記参照
参考記事 Cannyエッジ検出器の原理・特徴・計算式

今回は、以下の2通りの方法で処理を実装してみました。

概要
方法① NumPyでCannyアルゴリズムを書いて実装(実用的でないが原理の理解にはなる)
方法② cv2.Cannyで簡単に実装(1行で書けちゃうので楽チン)

cv2.Cannyの書式

dst = cv2.Canny(src, threshold1, threshold2[, edges[, apertureSize[, L2gradient]]])
パラメータ名 説明
src 入力画像
threshold1 最小閾値(Hysteresis Thresholding処理で使用)
threshold2 最大閾値(Hysteresis Thresholding処理で使用)

【サンプルコード】Python3 + OpenCV

サンプルプログラムのソースコードです。

方法①

方法②

実行結果

サンプルプログラムの実行結果です。

■入力画像(左)と出力画像(右)

お借りした画像:プロ生ちゃん(暮井 慧)

関連記事
1 PythonでOpenCV入門 サンプル集
2 【Python】画像処理プログラミング入門
3 【画像処理入門】アルゴリズム&プログラミング
Python画像処理
技術雑記

コメント

タイトルとURLをコピーしました