hiyoko-programingの日記

プログラミングを勉強したてのひよっ子。   エンジニア目指して勉強中。

キャニー

◉キャニーとは?

エッジを見つける方法の1つ。

エッジを美しく見つけるのが特徴だが、

見つける時間が長くなる。

キャニーはソーベルの結果を使うことで、

エッジを美しく浮き上がらせることができる。

 

◉キャニーの大まかな流れ

①元画像からノイズを除去

②ノイズを除去した画像にソーベルを横と縦の両方向で実施

③エッジに不必要な部分を除外

閾値を使って「確実にエッジ」と「エッジっぽい」部分を分ける

⑤「確実にエッジ」と「エッジっぽい」部分が重ならないところを除去

⑥「確実にエッジ」と「エッジっぽい」部分が重なったところだけをエッジとする

 

◉キャニーで画像からエッジを抜き出す方法

cv2.Canny(画像, 小さい閾値,  大きい閾値)

 ⚫︎画像:エッジを表現したい画像

 ⚫︎小さい閾値:「エッジっぽい」にしたい明暗

 ⚫︎大きい閾値:「確実にエッジ」にしたい明暗

 

<画像からキャニーで輪郭を抽出するPythonコード例>

import sys

import cv2

if len(sys.argv)<2:

    print('表示したいファイル名を指定してください。')

    sys.exit()

file = sys.argv[1]

try:

    img = cv2.imread( ' file ' ) 

    if img is None:

         raise ValueError('ファイルが見つかりません')

 edge = cv2.Canny (img, 10.0, 200.0)

    cv2.imshow(file, edge)

    cv2.waitKey(0)

    cv2.destroyAllWindows()

except ValueError as e:

    print(e)

except:

    import traceback

    traceback.print_exc()