opencv 找金币,按照金字塔缩小尝试匹配
# Author:Winter Liu is coming! import cv2 as cv import numpy as np import matplotlib.pyplot as plt def match_demo(src1, src2): res = cv.matchTemplate(src2, src1, cv.TM_CCOEFF_NORMED) # res = cv.matchTemplate(src2, src1, cv.TM_SQDIFF_NORMED) # min_val, max_val, min_loc, max_loc = cv.minMaxLoc(res) pt = np.where(res > 0.5) h, w, c = src1.shape print(len(pt[0])) # print(max_val) # print(max_loc) # cv.rectangle(src2,max_loc, (max_loc[0]+h, max_loc[1]+w), (0, 0, 255), 2) a = [(-1, -1)] p_zip = zip(pt[1], pt[0]) p_n = sorted(p_zip, key=lambda x: x[0], reverse=False) for p in p_n: # print(p) if abs(a[-1][0] - p[0]) > 10 or abs(a[-1][1] - p[1]) > 10: print(p) cv.rectangle(src2, p, (p[0]+w, p[1]+h), (0, 0, 255), 2) a.append(p) cv.imshow("src2", src2) cv.waitKey(0) cv.destroyWindow("src2") src1 = cv.imread(r"C:\PycharmProjects\OpenCV\pic\super_maria_coin.jpg") src2 = cv.imread(r"C:\PycharmProjects\OpenCV\pic\super_maria.jpg") match_demo(src1, src2) down = src1.copy() for i in range(4): down = cv.pyrDown(down) cv.imshow("down", down) cv.waitKey(0) cv.destroyWindow("down") match_demo(down, src2)
相关推荐
learningCV 2020-11-10
learningCV 2020-08-25
huang00 2020-08-21
wangdaren 2020-08-15
BeanJoy 2020-07-28
csdmeb 2020-06-25
wangdaren 2020-06-14
pythonxuexi 2020-06-13
woniulx0 2020-06-13
greent00 2020-06-10
liangzuojiayi 2020-06-09
greent00 2020-06-09
csdmeb 2020-06-08
BeanJoy 2020-06-06
lihuifei 2020-06-05
wangdaren 2020-06-03
wangdaren 2020-05-31
greent00 2020-05-30