OpenCVを使用したエッジ検出は、画像のエッジや輪郭を識別するプロセスで、画像処理や画像認識の分野で広く利用されています。エッジ検出の一般的な手法には、Cannyエッジ検出、Sobelエッジ検出、Laplacianエッジ検出などがあります。本記事では、これらの方法を使った基本的なエッジ検出の例をいくつか紹介します。
必要なもの
Python: プログラミング言語として使用。
OpenCV: 画像処理を行うためのオープンソースライブラリ。
OpenCVをインストールしてください。
pip install opencv-python
Cannyエッジ検出
Cannyエッジ検出は、画像のエッジを検出するための多段階アルゴリズムです。
import cv2
# 画像を読み込む
img = cv2.imread('image.jpg', 0)
# Cannyエッジ検出を適用
edges = cv2.Canny(img, 100, 200)
# 結果を表示
cv2.imshow('Canny Edge Detection', edges)
cv2.waitKey(0)
cv2.destroyAllWindows()
Sobelエッジ検出
Sobelオペレータは、水平方向と垂直方向の空間勾配を計算することでエッジを検出します。
import cv2
import numpy as np
# 画像を読み込む
img = cv2.imread('image.jpg', 0)
# Sobelエッジ検出を適用
sobelx = cv2.Sobel(img, cv2.CV_64F, 1, 0, ksize=5) # x方向のSobel
sobely = cv2.Sobel(img, cv2.CV_64F, 0, 1, ksize=5) # y方向のSobel
# 結果を表示
cv2.imshow('Sobel X', sobelx)
cv2.imshow('Sobel Y', sobely)
cv2.waitKey(0)
cv2.destroyAllWindows()
Laplacianエッジ検出
Laplacianエッジ検出は、画像の二次微分を使用してエッジを検出します。
import cv2
# 画像を読み込む
img = cv2.imread('image.jpg', 0)
# Laplacianエッジ検出を適用
laplacian = cv2.Laplacian(img, cv2.CV_64F)
# 結果を表示
cv2.imshow('Laplacian Edge Detection', laplacian)
cv2.waitKey(0)
cv2.destroyAllWindows()
OpenCVは、Canny、Sobel、Laplacianなど、さまざまなエッジ検出アルゴリズムを提供しています。これらは、画像から重要な特徴を抽出するための強力なツールです。