本文整理汇总了Python中cv2.matchTemplate方法的典型用法代码示例。如果您正苦于以下问题:Python cv2.matchTemplate方法的具体用法?Python cv2.matchTemplate怎么用?Python cv2.matchTemplate使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类cv2
的用法示例。
在下文中一共展示了cv2.matchTemplate方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: main
# 需要导入模块: import cv2 [as 别名]
# 或者: from cv2 import matchTemplate [as 别名]
def main():
src = cv2.imread('src.jpg', cv2.IMREAD_GRAYSCALE)
tpl = cv2.imread('tpl.jpg', cv2.IMREAD_GRAYSCALE)
result = cv2.matchTemplate(src, tpl, cv2.TM_CCOEFF_NORMED)
result = cv2.normalize(result, dst=None, alpha=0, beta=1,
norm_type=cv2.NORM_MINMAX, dtype=-1)
minVal, maxVal, minLoc, maxLoc = cv2.minMaxLoc(result)
matchLoc = maxLoc
draw1 = cv2.rectangle(
src, matchLoc, (matchLoc[0] + tpl.shape[1], matchLoc[1] + tpl.shape[0]), 0, 2, 8, 0)
draw2 = cv2.rectangle(
result, matchLoc, (matchLoc[0] + tpl.shape[1], matchLoc[1] + tpl.shape[0]), 0, 2, 8, 0)
cv2.imshow('draw1', draw1)
cv2.imshow('draw2', draw2)
cv2.waitKey(0)
print src.shape
print tpl.shape
print result.shape
print matchLoc
示例2: match_img
# 需要导入模块: import cv2 [as 别名]
# 或者: from cv2 import matchTemplate [as 别名]
def match_img(image, template, value):
"""
:param image: 图片
:param template: 模板
:param value: 阈值
:return: 水印坐标
描述:用于获得这幅图片模板对应的位置坐标,用途:校准元素位置信息
"""
res = cv2.matchTemplate(image, template, cv2.TM_CCOEFF_NORMED)
threshold = value
min_v, max_v, min_pt, max_pt = cv2.minMaxLoc(res)
if max_v < threshold:
return False
if not max_pt[0] in range(10, 40) or max_pt[1] > 20:
return False
return max_pt
开发者ID:Mingtzge,项目名称:2019-CCF-BDCI-OCR-MCZJ-OCR-IdentificationIDElement,代码行数:18,代码来源:split_img_generate_data.py
示例3: __apply_template_matching
# 需要导入模块: import cv2 [as 别名]
# 或者: from cv2 import matchTemplate [as 别名]
def __apply_template_matching(angle, template, image):
# Rotate the template
template_rotated = __rotate_image_size_corrected(template, angle)
# Apply template matching
image_templated = cv2.matchTemplate(image, template_rotated, cv2.TM_CCOEFF_NORMED)
# Correct template matching image size difference
template_rotated_height, template_rotated_width = template_rotated.shape
template_half_height = template_rotated_height // 2
template_half_width = template_rotated_width // 2
image_templated_inrange_size_corrected = cv2.copyMakeBorder(image_templated, template_half_height, template_half_height, template_half_width, template_half_width, cv2.BORDER_CONSTANT, value=0)
# Calculate maximum match coefficient
max_match = numpy.max(image_templated_inrange_size_corrected)
return (max_match, angle, template_rotated, image_templated_inrange_size_corrected)
示例4: probability
# 需要导入模块: import cv2 [as 别名]
# 或者: from cv2 import matchTemplate [as 别名]
def probability(self, im: str) -> float:
"""
Return the probability of the existence of given image.
:param im: the name of the image.
:return: the probability (confidence).
"""
assert self.screen is not None
try:
template = self.images[im]
except KeyError:
logger.error('Unexpected image name {}'.format(im))
return 0.0
res = cv.matchTemplate(self.screen, template, TM_METHOD)
_, max_val, _, max_loc = cv.minMaxLoc(res)
logger.debug('max_val = {}, max_loc = {}'.format(max_val, max_loc))
return max_val
示例5: find
# 需要导入模块: import cv2 [as 别名]
# 或者: from cv2 import matchTemplate [as 别名]
def find(self, im: str, threshold: float = None) -> Tuple[int, int]:
"""
Find the template image on screen and return its top-left coords.
Return None if the matching value is less than `threshold`.
:param im: the name of the image
:param threshold: the threshold of matching. If not given, will be set to the default threshold.
:return: the top-left coords of the result. Return (-1, -1) if not found.
"""
threshold = threshold or self.threshold
assert self.screen is not None
try:
template = self.images[im]
except KeyError:
logger.error('Unexpected image name {}'.format(im))
return -1, -1
res = cv.matchTemplate(self.screen, template, TM_METHOD)
_, max_val, _, max_loc = cv.minMaxLoc(res)
logger.debug('max_val = {}, max_loc = {}'.format(max_val, max_loc))
return max_loc if max_val >= threshold else (-1, -1)
示例6: compare
# 需要导入模块: import cv2 [as 别名]
# 或者: from cv2 import matchTemplate [as 别名]
def compare(i, j, img):
for x in range(lenX):
if x < i:
continue
for y in range(lenY):
if x <= i and y < j:
continue
z = mat[x][y]
# 图片相似度
y1 = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
z1 = cv2.cvtColor(z, cv2.COLOR_BGR2GRAY)
# image_difference = get_image_difference(y1, z1)
res = cv2.matchTemplate(z1, y1, cv2.TM_CCOEFF_NORMED)
# print(i, j, x, y, image_difference)
print(i, j, x, y, res)
# if abs(image_difference-1)>0.5:
# if image_difference < 0.1:
# pairs.append((i, j, x, y, image_difference))
if res[0][0] >= 0.8 :#and (i != x and j != y): # 0.9较好
if i ==x and j ==y:
continue
pairs.append((i, j, x, y, res[0][0]))
print('--------')
示例7: findAllMatches
# 需要导入模块: import cv2 [as 别名]
# 或者: from cv2 import matchTemplate [as 别名]
def findAllMatches(self, needle, similarity):
""" Find all matches for ``needle`` with confidence better than or equal to ``similarity``.
Returns an array of tuples ``(position, confidence)`` if match(es) is/are found,
or an empty array otherwise.
"""
positions = []
method = cv2.TM_CCOEFF_NORMED
match = cv2.matchTemplate(self.haystack, self.needle, method)
indices = (-match).argpartition(100, axis=None)[:100] # Review the 100 top matches
unraveled_indices = numpy.array(numpy.unravel_index(indices, match.shape)).T
for location in unraveled_indices:
y, x = location
confidence = match[y][x]
if method == cv2.TM_SQDIFF_NORMED or method == cv2.TM_SQDIFF:
if confidence <= 1-similarity:
positions.append(((x, y), confidence))
else:
if confidence >= similarity:
positions.append(((x, y), confidence))
positions.sort(key=lambda x: (x[0][1], x[0][0]))
return positions
示例8: cal_rgb_confidence
# 需要导入模块: import cv2 [as 别名]
# 或者: from cv2 import matchTemplate [as 别名]
def cal_rgb_confidence(img_src_rgb, img_sch_rgb):
"""同大小彩图计算相似度."""
# BGR三通道心理学权重:
weight = (0.114, 0.587, 0.299)
src_bgr, sch_bgr = cv2.split(img_src_rgb), cv2.split(img_sch_rgb)
# 计算BGR三通道的confidence,存入bgr_confidence:
bgr_confidence = [0, 0, 0]
for i in range(3):
res_temp = cv2.matchTemplate(src_bgr[i], sch_bgr[i], cv2.TM_CCOEFF_NORMED)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res_temp)
bgr_confidence[i] = max_val
# 加权可信度
weighted_confidence = bgr_confidence[0] * weight[0] + bgr_confidence[1] * weight[1] + bgr_confidence[2] * weight[2]
return weighted_confidence
示例9: exists
# 需要导入模块: import cv2 [as 别名]
# 或者: from cv2 import matchTemplate [as 别名]
def exists(frame, template, thresh):
"""
Returns True if 'template' is in 'frame' with probability of at least 'thresh'
:param frame: A frame
:param template: An image to search in 'frame'.
:param thresh: The minimum probability required to accept template.
:return: If template is in frame
"""
digit_res = cv2.matchTemplate(frame, template, cv2.TM_CCOEFF_NORMED)
loc = np.where(digit_res >= thresh)
if len(loc[-1]) == 0:
return False
for pt in zip(*loc[::-1]):
if digit_res[pt[1]][pt[0]] == 1:
return False
return True
示例10: most_probably_template
# 需要导入模块: import cv2 [as 别名]
# 或者: from cv2 import matchTemplate [as 别名]
def most_probably_template(image, templates):
"""
Get the index of the template(in the templates list) which is most likely to be in the image.
:param image: Image that contain the template
:param templates: A list of templates to search in image
:return: the index (in templates) which has the highest probability of being in image
"""
probability_list = []
for template in templates:
res = cv2.matchTemplate(image, template, cv2.TM_CCOEFF_NORMED)
probability_list.append(float(np.max(res)))
return probability_list.index(max(probability_list))
示例11: match_dmg_templates
# 需要导入模块: import cv2 [as 别名]
# 或者: from cv2 import matchTemplate [as 别名]
def match_dmg_templates(self, frame):
match_mat, max_val, tl = [None]*10, [0]*10, [(0, 0)]*10
for i in range(0, 10):
match_mat[i] = cv2.matchTemplate(frame, self.num_img[0],
cv2.TM_CCORR_NORMED, mask=self.num_mask[0])
_, max_val[i], _, tl[i] = cv2.minMaxLoc(match_mat[i])
# print(max_val[0])
br = (tl[0][0] + self.num_w, tl[0][1] + self.num_h)
frame = cv2.rectangle(frame, tl[0], br, (255, 255, 255), 2)
# Multi-template result searching
# _, max_val_1, _, tl_1 = cv2.minMaxLoc(np.array(match_mat))
# print(tl_1)
# A number of methods corresponding to the various trackbars available.
示例12: find_game_position
# 需要导入模块: import cv2 [as 别名]
# 或者: from cv2 import matchTemplate [as 别名]
def find_game_position(self, threshold) -> Dict:
monitor = self.shooter.monitors[0]
buffer = self.shooter.grab(monitor)
image = Image.frombytes('RGB', buffer.size, buffer.rgb).convert('L')
image = np.array(image)
dino_template = cv2.imread(os.path.join('templates', 'dino.png'), 0)
res = cv2.matchTemplate(image, dino_template, cv2.TM_CCOEFF_NORMED)
loc = np.where(res >= threshold)
if len(loc[0]) == 0:
dino_template = cv2.imread(os.path.join('templates', 'dino2.png'), 0)
res = cv2.matchTemplate(image, dino_template, cv2.TM_CCOEFF_NORMED)
loc = np.where(res >= threshold)
if len(loc[0]):
pt = next(zip(*loc[::-1]))
w, h = dino_template.shape[::-1]
lw, lh = self.landscape_template.shape[::-1]
return dict(monitor, height=lh, left=pt[0], top=pt[1] - lh + h, width=lw)
return {}
示例13: imagesearcharea
# 需要导入模块: import cv2 [as 别名]
# 或者: from cv2 import matchTemplate [as 别名]
def imagesearcharea(image, x1, y1, x2, y2, precision=0.8, im=None):
if im is None:
im = region_grabber(region=(x1, y1, x2, y2))
if is_retina:
im.thumbnail((round(im.size[0] * 0.5), round(im.size[1] * 0.5)))
# im.save('testarea.png') usefull for debugging purposes, this will save the captured region as "testarea.png"
img_rgb = np.array(im)
img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
template = cv2.imread(image, 0)
res = cv2.matchTemplate(img_gray, template, cv2.TM_CCOEFF_NORMED)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
if max_val < precision:
return [-1, -1]
return max_loc
示例14: imagesearch_count
# 需要导入模块: import cv2 [as 别名]
# 或者: from cv2 import matchTemplate [as 别名]
def imagesearch_count(image, precision=0.9):
img_rgb = pyautogui.screenshot()
if is_retina:
img_rgb.thumbnail((round(img_rgb.size[0] * 0.5), round(img_rgb.size[1] * 0.5)))
img_rgb = np.array(img_rgb)
img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
template = cv2.imread(image, 0)
w, h = template.shape[::-1]
res = cv2.matchTemplate(img_gray, template, cv2.TM_CCOEFF_NORMED)
loc = np.where(res >= precision)
count = 0
for pt in zip(*loc[::-1]): # Swap columns and rows
# cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0, 0, 255), 2) // Uncomment to draw boxes around found occurrences
count = count + 1
# cv2.imwrite('result.png', img_rgb) // Uncomment to write output image with boxes drawn around occurrences
return count
示例15: locate_img
# 需要导入模块: import cv2 [as 别名]
# 或者: from cv2 import matchTemplate [as 别名]
def locate_img(image, template):
img = image.copy()
res = cv2.matchTemplate(img, template, method)
print res
print res.shape
cv2.imwrite('image/shape.png', res)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
print cv2.minMaxLoc(res)
if method in [cv2.TM_SQDIFF, cv2.TM_SQDIFF_NORMED]:
top_left = min_loc
else:
top_left = max_loc
h, w = template.shape
bottom_right = (top_left[0] + w, top_left[1]+h)
cv2.rectangle(img, top_left, bottom_right, 255, 2)
cv2.imwrite('image/tt.jpg', img)