Introduction
Corner detection helps find points in images where edges meet, which are useful for recognizing shapes and tracking objects.
Jump into concepts and practice - no test required
cv2.cornerHarris(src_gray, blockSize, ksize, k) # Parameters: # src_gray: Grayscale input image (float32 type) # blockSize: Size of neighborhood considered for corner detection # ksize: Aperture parameter for Sobel operator # k: Harris detector free parameter (usually 0.04 to 0.06)
dst = cv2.cornerHarris(gray_img, 2, 3, 0.04)
dst = cv2.cornerHarris(gray_img, 3, 5, 0.06)
import cv2 import numpy as np # Load image and convert to grayscale img = cv2.imread('chessboard.png') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) gray = np.float32(gray) # Detect corners using Harris block_size = 2 ksize = 3 k = 0.04 corner_response = cv2.cornerHarris(gray, block_size, ksize, k) # Dilate corner points to mark them corner_response = cv2.dilate(corner_response, None) # Threshold to mark strong corners in red img[corner_response > 0.01 * corner_response.max()] = [0, 0, 255] # Save result image cv2.imwrite('chessboard_corners.png', img) # Print some stats print(f"Max corner response: {corner_response.max():.2f}") print(f"Number of corners detected: {(corner_response > 0.01 * corner_response.max()).sum()}")
corners?
import cv2
import numpy as np
img = cv2.imread('image.jpg', 0)
corners = cv2.cornerHarris(img, 2, 3, 0.04)
print(type(corners))import cv2
import numpy as np
img = cv2.imread('image.jpg', 0)
corners = cv2.cornerHarris(img, 2, 3, 0.04)
corners = cv2.dilate(corners, None)
img[corners > 0.01 * corners.max()] = 255
cv2.imshow('Corners', img)
cv2.waitKey(0)
cv2.destroyAllWindows()