OpenCV可以检测静止图像中的预定义图像标记吗?



我对opencv的世界完全陌生,我想问一个概念性的问题......

是否可以以类似于增强现实框架检测和跟踪视频源中的标记图像的方式检测静态照片中的"标记"?

如果单个图像包含已知标记(来自唯一标记的数据库(,我可以提取该标记的大小、位置和方向(假设标记图像具有足够的可检测特征等(吗?

是的。执行此操作的方法之一是使用特征匹配。在您的情况下,源图像中有预定义的标记,并且必须与目标图像匹配,如下所示。一个变化是我们不需要在源图像中找到关键点。 假设你有一组标记(x1,y1(,(x2,y2(。,您可以像这样计算筛分或球体描述符。

key_points_src = [cv2.KeyPoint(x1, y1, 1), cv2.KeyPoint(x2, y2, 1) ...]
key_points_src, src_des = orb.compute(src_img, key_points_src)

现在将它们与目标图像匹配的一种方法是: 在目标图像中查找关键点并计算描述符

key_points_target, target_des = orb.detectAndCompute(target_img, None)

现在匹配它们

bf = cv.BFMatcher(cv.NORM_HAMMING, crossCheck=True)
matches = bf.match(src_des,target_des)

这可以是一个起点,并签出其他方法的opencv文档,如计数,模板匹配等,可用于基于标记的AR。

最新更新