我是opencv的新手,我想问一个概念性的问题...
是否可以以类似于增强现实框架检测和跟踪视频源中标记图像的方式检测静态照片中的“标记”?
如果单个图像包含一个已知标记(从唯一标记的数据库中),我可以提取该标记的大小,位置和方向(假设标记图像具有足够的可检测特征等)吗?
最佳答案
是。一种方法是使用特征匹配。在您的情况下,您在源图像中有预定义的标记,并且必须与目标图像匹配,如here所示。一种变化是我们不需要在源图像中找到关键点。
假设您有一组标记(x1,y1),(x2,y2)..,您可以像这样计算sift或orb描述符。
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)
这可以作为其他方法(例如countours,模板匹配等)的起点和结帐opencv docs,这些方法可以用于基于标记的AR。
关于opencv - OpenCV可以检测静止图像中的预定义图像标记吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62275011/