はじめに
OpenCVでコーナーの検出を行います。方法は主にHarris Corner Detection Method
とgoodFeaturesToTrack Detection Method
の2つがあります。
使用する画像は次の画像です。Rectangles.png
として保存して使用します。
Harris Corner Detection Method
はじめにHarris Corner Detection Method
を試します。
harris.py
import cv2
import numpy as np
image= cv2.imread('Rectangles.png')
gray= cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
gray= np.float32(gray)
harris_corners= cv2.cornerHarris(gray, 3, 3, 0.05)
kernel= np.ones((7,7), np.uint8)
harris_corners= cv2.dilate(harris_corners, kernel, iterations= 2)
image[harris_corners > 0.025 * harris_corners.max()]= [255,127,127]
cv2.imwrite('Corner_detected_rectangles.png', image)
cv2.imshow('Harris Corners', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
- 処理後
goodFeaturesToTrack Detection Method
次にgoodFeaturesToTrack Detection Method
を試します。
goodReatures.py
import cv2
img= cv2.imread('Rectangles.png')
gray= cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
corners= cv2.goodFeaturesToTrack(gray, 100, 0.01, 50)
for corner in corners:
x,y= corner[0]
x= int(x)
y= int(y)
cv2.rectangle(img, (x-10,y-10),(x+10,y+10),(255,0,0),-1)
cv2.imwrite('Corner_detected_rectangles.png', img)
cv2.imshow("goodFeaturesToTrack Corner Detection", img)
cv2.waitKey()
cv2.destroyAllWindows()
- 処理後
参考