Notice
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- pypdf2
- pythonnet
- processstart
- pdf merge
- pyautogui
- YOLOv7
- objectdetection
- YOLOv5
- ironpython
- 파이썬 #업무자동화 #python
- google cloud
- computervision
- 사무자동화
- Google API
- Text-to-Speech
- 사무자동화 #Selenium
- Text To Speech
- yolo
- DeepLearning
- 업무자동화
Archives
- Today
- Total
Doarchive
[OpenCV] Template Matching 본문
OpenCV Template Matching
원본 이미지 내에서 템플릿 이미지와 가장 유사한 이미지를 식별
템플릿 이미지를 원본 이미지 위에 올리고 각 위치에서 유사성 메트릭을 계산하며.
유사성 메트릭은 템플릿이 원본 이미지의 해당 영역과 얼마나 잘 일치하는지 측정한다
템플릿 매칭을 위한 방법 (TM_CCOFF_NORMED 을 주로 사용함)
-cv2.TM_SQDIFF: 원본 이미지의 영역과 템플릿 간의 차이 제곱합을 유사성 메트릭으로 사용함. 점수가 작을수록 더 적합한것
-cv2.TM_SQDIFF_NORMED: TM_SQDIFF 와 유사함 결과는 0 ~ 1 범위로 정규화됨, 점수가 0인경우 완벽하게 매칭된것
-cv2.TM_CCORR: 템플릿과 원본 이미지의 영역 사이의 상관 계수를 유사성 메트릭으로 사용함 점수가 더 클수록 유사한것
-cv2.TM_CCORR_NORMED: TM_CCORR와 방법은 유사하나 ,결과는 0 ~ 1 범위로 정규화됨. 점수가 1인경우 완벽하게 매칭된것
-cv2.TM_CCOFF: 템플릿과 원본 이미지의 영역 평균 간의 상관 계수를 유사성 메트릭으로 사용. 점수가 클수록 더 적합함
-cv2.TM_CCOFF_NORMED: TM_CCOFF, 방법은 유사하나 결과를 -1~1 범위로 정규화함 . 점수가 1인경우 완벽하게 매칭된것
cv2.minMaxLoc() 함수를 사용하여 , 지정된 배열에서 최소값과 최대값의 위치를 반환한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
import cv2
import numpy as np
filepath ='plate.bmp'
templatePath ='disp.tip.bmp'
# Load source and template images
source_image = cv2.imread(filepath) # Load the source image
template_image = cv2.imread(templatePath) # Load the template image
# Convert images to grayscale
source_gray = cv2.cvtColor(source_image, cv2.COLOR_BGR2GRAY) # Convert the source image to grayscale
template_gray = cv2.cvtColor(template_image, cv2.COLOR_BGR2GRAY) # Convert the template image to grayscale
# Perform Template Matching using the normalized cross-correlation method
match_result = cv2.matchTemplate(source_gray, template_gray, cv2.TM_CCOEFF_NORMED)
# Find location of best match
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(match_result)
# Draw a rectangle around the best match
template_width, template_height = template_gray.shape[::-1]
top_left = max_loc
bottom_right = (top_left[0] + template_width, top_left[1] + template_height)
cv2.rectangle(source_image, top_left, bottom_right, (0, 0, 255), 2)
# Show the source image with the best match highlighted
cv2.imshow('Result', source_image)
cv2.waitKey(0) # Wait for a key press
cv2.destroyAllWindows() # Close all windows
|
cs |
원본이미지 / 템플릿 이미지
결과이미지
728x90
'Computer Vision > ImageProcessing' 카테고리의 다른 글
주파수 도메인과 공간 도메인 (0) | 2023.04.12 |
---|---|
[OpenCV] Mask 설정 (0) | 2023.04.11 |
[Python] 1채널 이미지를 3채널로 바꾸기 1Channel Image convert to 3 Channel Image (0) | 2022.12.21 |
[OpenCV] 허프 변환을 이용한 원 검출 Hough Circle Transform (0) | 2022.12.02 |
BMP, JPG, JPEG, GIF, PNG 포맷의 특징 (0) | 2022.08.02 |