OpenCV 템 플 릿 일치
주로 OpenCV 의 템 플 릿 일치 와 테두리 검출 기술,그리고 안 드 로 이 드 개발 디 버 깅 도구 ADB 와 관련된다.
같이 놓 고 얘 기 하면 내용 이 좀 많은 것 같 아 요.
그래서 3 기로 나 누 어 말 하면 더 많은 것 을 알 수 있다.
먼저 템 플 릿 매 칭 을 소개 한 다음 에 가장자리 검 측 을 하고 마지막 으로 ADB 와 결합 하여'점프'자동 화 를 실현 합 니 다.
게임 은 비록 유행 이 지 났 지만,가 져 와 서 연습 하 는 것 은 그래도 괜찮다.
프로 그래 밍 은 즐 거 워 야 지,하하.
/01/템 플 릿 일치
템 플 릿 이 일치 하 는 것 은 전체 그림 영역 에서 고정자 그림 과 일치 하 는 작은 블록 을 발견 하 는 것 입 니 다.
템 플 릿 그림(주어진 하위 그림)과 검 측 할 그림(원본 그림)이 필요 합 니 다.
검 측 대기 이미지 에서 왼쪽 에서 오른쪽으로,위 에서 아래로 템 플 릿 이미지 와 겹 치 는 하위 이미지 의 일치 도 를 계산 합 니 다.일치 도가 클 수록 둘 이 같 을 가능성 이 큽 니 다.
여 기 는 주로 OpenCV 의
cv2.matchTemplate()
와cv2.minMaxLoc()
함수 와 관련된다.첫 번 째 함수 역할 은 템 플 릿 과 입력 이미지 사이 에서 일치 하 는 결 과 를 찾 는 것 입 니 다.
두 번 째 함수 의 역할 은 주어진 행렬 에서 최대 와 최소 값(그들의 위 치 를 포함)을 찾 는 것 입 니 다.
그 중에서 템 플 릿 일치 알고리즘 은 다음 과 같은 여섯 가지 가 있 습 니 다.
# , , 0. ,
#
method=CV_TM_SQDIFF
#
method=CV_TM_SQDIFF_NORMED
# , , ,0
#
method=CV_TM_CCORR
#
method=CV_TM_CCORR_NORMED
# , ,1 ,-1 ,0 ( )
#
method=CV_TM_CCOEFF
#
method=CV_TM_CCOEFF_NORMED
표준 화 는 수 치 를 0~1 로 통일 하 는 것 을 의미한다.제곱 차 유형 을 제외 하고 값 이 작 을 수록 좋 고 다른 것 은 모두 값 이 클 수록 좋다.
/02/이미지 검색
먼저 두 장의 그림 을 보 세 요.모두 그 레이스 케 일 입 니 다.
import cv2
#
img = cv2.imread('game.png', 0)
#
temple = cv2.imread('temple.png', 0)
#
cv2.namedWindow('sample', 0)
cv2.resizeWindow('sample', 400, 600)
cv2.imshow('sample', img)
#
cv2.namedWindow('target', 0)
cv2.resizeWindow('target', 400, 600)
cv2.imshow('target', temple)
출력 결 과 는 다음 과 같다.첫 번 째 는 템 플 릿 그림 이 고,두 번 째 는 검 측 대상 그림 입 니 다.
다음은 OpenCV 의 두 함 수 를 사용 하여 템 플 릿 매 칭 을 실현 합 니 다.
#
th, tw = temple.shape[:2]
print(th, tw)
# ,1 ,-1 ,0
result = cv2.matchTemplate(img, temple, cv2.TM_CCOEFF_NORMED)
# result
# print(result)
# TM_CCOEFF_NORMED
cv2.namedWindow('match_r', 0)
cv2.resizeWindow('match_r', 400, 600)
#
cv2.imshow('match_r', result)
# minMaxLoc, (val), (loc)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
# ,
tl = max_loc
#
br = (tl[0]+tw, tl[1]+th)
#
cv2.rectangle(img, tl, br, (0, 0, 255), 2)
#
cv2.namedWindow('match', 0)
cv2.resizeWindow('match', 400, 600)
#
cv2.imshow('match', img)
#
cv2.waitKey(0)
cv2.destroyAllWindows()
출력 결 과 는 다음 과 같다.첫 번 째 그림 에서 가장 하 얀 위 치 는 가장 높 은 매 칭 을 나타 낸다.
두 번 째 그림 에서 사각형 상 자 는 일치 하 는 결 과 를 나타 낸다.
직사각형 상자 의 위치 파 라 메 터 를 통 해 템 플 릿 이미지 의 크기 와 결합 하면 작은 바둑 중심 점 위치(아래쪽)를 얻 을 수 있 습 니 다.
/03/총괄
이제 점프 의 위 치 를 감지 할 수 있 으 니 다음 단 계 는 네모 난 위치 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Visual Studio 2017에서 OpenCV 템플릿 프로젝트 만들기・Windows 7 Professional 64bit ・Visual Studio 2017 Version 15.9.14 · OpenCV 3.4.1 OpenCV의 도입 방법 등은 아래를 참조하십시오. Visual Stu...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.