但是点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
假设你是一名在超市工作的员工,被要求在商店里四处走动,检查需要重新进货的货架。但是,超市有时会有多个区域来存放一种特定的产品,所以要跟踪购物者购买产品的确切位置并不容易。最重要的是,报告库存的空货架空间可能非常耗时,而且总是存在人为缺陷的可能性。这就是通过计算机视觉识别空的货架空间可能会派上用场的地方。
我们创建两个独特的模板并遍历图像以找到足够相似的多维数组。相似度是基于我们可配置的阈值。OpenCV的模板matchTemplate函数可以实现该操作。
模板匹配
有一些方法可以通过计算机视觉来实现这一点,有些比其他的更好,然而,在这篇文章中,我们将尝试OpenCV中的模板匹配。
模板匹配是一种在较大的图像中搜索和查找模板图像位置的方法。OpenCV附带了一个函数cv.matchTemplate()为这个目的。它简单地将模板图像滑动到输入图像上(就像在2D卷积中一样),并在模板图像下比较输入图像的模板和补丁。
模板匹配的第一步是创建我们的模板。当看到上面的照片,我们可以立即识别出中间顶部的两个架子有空余的空间。在最上面的架子上,我们可以确定有3-5个白色的bag产品需要重新进货。在第二个架子上,我们可以看到大约有两种产品需要重新进货。
首先,让我们用Python加载以下图片:
import cv2
import matplotlib.pyplot as plt
import numpy as np
img = cv2.imread("/content/drive/MyDrive/Computer Vision/new_shelf.jpg")
plt.figure(figsize = (20,15))
plt.imshow(img)
下面是创建特定模板的代码(注意template_2由于空置面积较小,更窄):
template_1 = img[60:270, 1890:2010]
plt.imshow(template_1)
template_2 = img[300:500, 1825:1905]
plt.imshow(template_2)
模板2(中间第2格)
如果你想的话,你可以调整模板的大