1. hitomatagi

    Posted

    hitomatagi
Changes in title
+OpenCVでエッジ検出してみる
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,64 @@
+# はじめに
+
+OpenCV(Open Source Computer Vision Library)はBSDライセンスの映像/画像処理ライブラリ集です。画像のフィルタ処理、テンプレートマッチング、物体認識、映像解析、機械学習などのアルゴリズムが多数用意されています。
+
+OpenCVを使った動体追跡の例 (OpenCV Google Summer of Code 2015)
+https://www.youtube.com/watch?v=OUbUFn71S4s
+
+動体追跡をしたりするために、最初に画像のフィルター処理をすると思います。
+今回は、OpenCVを使ってエッジ検出をしてみます。
+
+# プログラム
+以下のような流れになります。
+
+1. カラー画像を読み込む
+2. グレースケールに変換する
+3. エッジ検出
+
+```sample.py
+import cv2
+
+# 定数定義
+ORG_WINDOW_NAME = "org"
+GRAY_WINDOW_NAME = "gray"
+CANNY_WINDOW_NAME = "canny"
+
+ORG_FILE_NAME = "org.jpg"
+GRAY_FILE_NAME = "gray.png"
+CANNY_FILE_NAME = "canny.png"
+
+# 元の画像を読み込む
+org_img = cv2.imread(ORG_FILE_NAME, cv2.IMREAD_UNCHANGED)
+# グレースケールに変換
+gray_img = cv2.imread(ORG_FILE_NAME, cv2.IMREAD_GRAYSCALE)
+# エッジ抽出
+canny_img = cv2.Canny(gray_img, 50, 110)
+
+# ウィンドウに表示
+cv2.namedWindow(ORG_WINDOW_NAME)
+cv2.namedWindow(GRAY_WINDOW_NAME)
+cv2.namedWindow(CANNY_WINDOW_NAME)
+
+cv2.imshow(ORG_WINDOW_NAME, org_img)
+cv2.imshow(GRAY_WINDOW_NAME, gray_img)
+cv2.imshow(CANNY_WINDOW_NAME, canny_img)
+
+cv2.imwrite(GRAY_FILE_NAME, gray_img)
+cv2.imwrite(CANNY_FILE_NAME, canny_img)
+
+# 終了処理
+cv2.waitKey(0)
+cv2.destroyAllWindows()
+```
+
+# 実行結果
+手前の森、中ほどのビル、奥の空がそれなりにエッジ抽出されました。
+
+![org.jpg](https://qiita-image-store.s3.amazonaws.com/0/107056/b11f2a62-907b-cdc4-d5db-0ff9289c88a7.jpeg)
+               **元画像**
+
+![gray.png](https://qiita-image-store.s3.amazonaws.com/0/107056/8fa2b502-3e58-a36b-36e0-7582ededc748.png)
+               **グレースケール**
+
+![canny.png](https://qiita-image-store.s3.amazonaws.com/0/107056/e7fcca7a-2fc4-b3f9-4069-970e5098ec12.png)
+               **エッジ検出**