如何在 0.1 秒,找到被渣浪坑的王思聪

今天我就教大家来写一个 Python 小程序,用来在众多相似的图片中,快速的找出我们的王校长。程序最后会用红色框框画出识别出的王校长,下图就是我们最后程序的结果。

程序很简单总共也不到 30 行的代码量,主要用到的库有 OpenCV 和 matplotlib。

OpenCV

OpenCV 的全称是 Open Source Computer Vision Library,是一个跨平台的计算机视觉库。OpenCV 是由英特尔公司发起并参与开发,以 BSD 许可证授权发行,可以在商业和研究领域中免费使用。OpenCV 可用于开发实时的图像处理、计算机视觉以及模式识别程序。

在 Python 中你可以通过 pip install oepncv-python 来安装 OpenCV 库。

import cv2
from matplotlib import pyplot as plt

# 获取王思聪图片样本
template = cv2.imread('wangsicong.png')
# 设置与鸭子同等大小,并采用插值 inter_cubic 的方式进行重采样
template = cv2.resize(template, (31, 31), interpolation=cv2.INTER_CUBIC)
# 原图
img_rgb = cv2.imread('image.jpg')
# 识别结果
res = cv2.matchTemplate(img_rgb, template, cv2.TM_CCOEFF)

程序首先导入所需的库,然后再通过 cv2.imread 函数把我们需要识别的图片和样本先读取到,随后再使用 matchTemplate 函数来识别我们的图片。相应的代码里我都有注释。

通过 matchTemplate 函数我们可以得到一个识别结果 res,然后再通过这个变量我们可以获取到识别的坐标,最后我们用 cv2.rectangle 这个画长方形的函数,把王校长用红框标记出来,具体代码如下。

# 监测目标宽和高
w, h = template[:,:,0].shape[::-1]
print(w, h)
# print(w, h)
# 从匹配结果中得到一个锚
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
# 画正方形
top_left = max_loc
bottom_right = (top_left[0] + w, top_left[1] + h)
imgplt = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2RGB)
cv2.rectangle(imgplt, top_left, bottom_right, 255, 2)
plt.imshow(imgplt)
plt.title('Detected results'), plt.xticks([]), plt.yticks([])
plt.savefig("filename.png")
plt.show()

最后我们再写个 time 函数来计算花费的时间。

0.1 秒的时间内我们就把王校长给找出来,并且用红框标记出来。

完整代码: 链接: https://pan.baidu.com/s/1nUePH49q3WcijY-Khc_PrA 提取码: kbim

猜你喜欢

转载自blog.csdn.net/zhusongziye/article/details/84311092