python是AI使用最多的语言,加入opencv,更是如虎添翼,以下就是在头像中查找眼睛,准备一张眼睛的图片和一张头像的图片,就可以在这个头像中找到眼睛。
由于这只是演示,眼睛可以不是这个头像中的,但象素及底色要相近。
程序:
import cv2
import numpy as np
from matplotlib import pyplot as plt
template = cv2.imread('./test/eye.jpg',0)
w, h = template.shape[::-1]
meth = 'cv2.TM_SQDIFF_NORMED'
img = cv2.imread('./test/head1.jpg',0)
img2 = img.copy()
img = img2.copy()
method = eval(meth)
res = cv2.matchTemplate(img,template,method)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
if method in [cv2.TM_SQDIFF, cv2.TM_SQDIFF_NORMED]:
top_left = min_loc
else:
top_left = max_loc
bottom_right = (top_left[0] + w, top_left[1] + h)
cv2.rectangle(img,top_left, bottom_right, 255, 2)
plt.subplot(121),plt.imshow(res,cmap = 'gray')
plt.title('Matching Result'), plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(img,cmap = 'gray')
plt.title('Detected Point'), plt.xticks([]), plt.yticks([])
plt.suptitle(meth)
plt.show()
运行结果