我需要在移动物体的一系列照片上跟踪四个点。起初,我尝试了看起来像棋盘的四个方格(2 个白色和 2 个黑色)和 ORB 检测器的标记:
import numpy as np
import cv2
from matplotlib import pyplot as plt
img = cv2.imread('D:/workspace_Rita/Tag5.jpg',0)
orb = cv2.ORB_create()
# find the keypoints with ORB
kp = orb.detect(img,None)
kp, des = orb.compute(img, kp)
img2 = cv2.drawKeypoints(img,kp,None,color=(0,255,0), flags=0)
plt.imshow(img2),plt.show()
图片: http: //postimg.org/image/52phl54rz/
А加上所需的点(标记的中心),我得到了很多噪音,所以我决定将棋盘标记更改为基准标记,以 ARTag 样式绘制。此外,如果对象旋转,这些标记将有助于识别点。现在,使用相同的 Python 代码,我得到:
图片: http: //postimg.org/image/f58zzrkl5/
我仍然检测到噪声点,并且我看不到从关键点质量中提取标记中心坐标的简单方法。我认为,我需要调整检测器的灵敏度(也许,对图像进行一些预过滤),或者找到另一种算法。
我会很感激想法和示例,我可以使用哪些检测器或算法以最简单的方式跟踪基准标记中心,更喜欢 Python 语言和 Open CV。