Python OpenCV3で画像のエッジを抽出する

[amazonjs asin="4061538225″ locale="JP" title="OpenCVによる画像処理入門 (KS情報科学専門書)"]

 

前提

OpenCV3のインストールからの続きの前提で。

 

OpenCV3をインストールした仮想環境に入る。
またsourceディレクトリを作成し、sourceディレクトリ内にimageディレクトリを作成する。

[shell]
$ cd ~/Documents/opencv_python/
$ source ./bin/activate
(opencv_python)$ mkdir source
(opencv_python)$ cd source
(opencv_python)$ mkdir image
[/shell]

imageディレクトリ内に画像を設置しておく。
今回は以下の画像(slack_botter.png)を使う。

slack_botter

sourceディレクトリにedge.pyファイルを作成する。

[python title="edge.pyの内容"]
# -*- coding: utf-8 -*-

import cv2

if __name__ == '__main__’:

# 画像の読み込み
gray = cv2.imread("./image/slack_botter.png", 0)
# エッジの抽出
edge = cv2.Canny(gray, 100, 200)

# 表示
cv2.imshow("Show Image", edge)
cv2.waitKey(0)
cv2.destroyAllWindows()

[/python]

edge.pyを実行する。

[shell]
(opencv_python)$ cd ~/Documents/opencv_python/source
(opencv_python)$ python edge.py
[/shell]

すると以下のような画像が表示される。
元画像のSlackerの部分やjinja2のの背景の部分など、薄い部分は取り切れていない。

スクリーンショット 2015-06-19 23.04.40

[python]
edge = cv2.Canny(gray, 100, 200)
[/python]

の値を

[python]
edge = cv2.Canny(gray, 0, 200)
[/python]

のようにしきい値を調整することで取得されるエッジが変わる。

スクリーンショット 2015-06-19 23.07.55