Object Detection with OpenCV

박광욱·2023년 1월 28일
0

Computer Vision

목록 보기
5/8

📕 템플릿 매칭

✍ matchTemplate

matchTemplate(image, templ, method[, result[, mask]]) -> result

템블릿 매칭은 원본 이미지(img1)와 원본 이미지의 일부분(img2)를 매칭시켜 매칭 정도를 나타낸다. -> 히트맵
보통 히트맵에서 밝은 부분이 매칭정도가 높다.

image : 원본 이미지(img1)
templ : 일부분 (img2)
method : 매칭시킬 방법

💻 결과


📗 해리스 코너

✍ cornerHarris

cornerHarris(src, blockSize, ksize, k[, dst[, borderType]]) -> dst

src : 이미지
blockSize : 이웃 픽셀의 범위
ksize : Sobel 미분에 사용된 인자
k : harris 공식에서 k값

💻 결과


📘 Edge Detection

✍ Canny

Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient]]]) -> edges

image : 이미지
threshold1 : 첫 번째 임계 값
threshold2 : 두 번째 임계 값

threshold1보다 작은 값들은 버리고 threshold2보다 큰 값은 살린다.
그 사이의 값들은 이웃한 8개의 픽셀을 봐서 결정된다.

💻 결과


📙 Greed Detection

✍ findChessboardCorners

findChessboardCorners(image, patternSize[, corners[, flags]]) -> retval, corners

image : 이미지
patternSize : 체스보드 안에서 코너의 개수 행과 열로 나타냄 ex) (7,7)

✍ drawChessboardCorners

drawChessboardCorners(image, patternSize, corners, patternWasFound) -> image

image : 이미지
patternSize : 체스보드 안에서 코너의 개수
corners : findChessboardCorners에서 리턴 값인 corners를 넣어주면 됨.
patternWasFound : findChessboardCorners에서 리턴 값인 retval을 넣어주면 됨.

💻 결과


📕 Contour Detection

✍ findContours

findContours(image, mode, method[, contours[, hierarchy[, offset]]]) -> image, contours, hierarchy

image : 이미지
mode : contour 제공 방식
method : 근사 값 방식


📗 Feature Matching

✍ SIFT

sift = cv2.xfeatures2d.SIFT_create()
kp1, des1 = sift.detectAndCompute(reeses, None)
kp2, des2 = sift.detectAndCompute(cereals, None)
bf= cv2.BFMatcher()
matches = bf.knnMatch(des1, des2, k=2)
good = []
for match1, match2 in matches:
    if match1.distance < 0.75*match2.distance:
        good.append([match1])
sift_matches = cv2.drawMatchesKnn(reeses, kp1, cereals, kp2, good, None, flags=2)

💻 결과

profile
Vancouver

0개의 댓글