python - 查找基准标记的中心

标签 python opencv computer-vision augmented-reality orb

我需要在移动物体的一系列照片上跟踪四个点。
首先,我尝试了看起来像棋盘的四个正方形(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。

最佳答案

我认为您太快无法检测到标记。这是操作方法:

  • 使用中值过滤器
  • 去噪(可选)
  • 简单阈值检测明亮/白色表面
  • 将最大的图像保留在图像中心(白板)。通过添加霍夫滤镜可以找到平行线(面板/矩形边框),可以对此进行微调。
  • 新阈值设置,用于检测先前结果中的暗区。
  • 连接的组件标签可分隔暗区。如果彼此碰触。
  • 每个区域的质心,如果区域彼此接触,则最终腐 eclipse 。
  • 关于python - 查找基准标记的中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32502776/

    相关文章:

    python - 检索 Matplotlib 热图颜色

    python - 按下按钮时显示一组重复图像的简单图形用户界面

    c++ - OpenCV3:cv::cuda::Stream::enqueueUpload() 去哪儿了?

    python - 如何用灰色噪声掩盖图像?

    python - virtualenv 没有激活虚拟环境

    opencv - OpenCV凸度缺陷图

    node.js - 在OpenCV calibrateCamera cameraMatrix和distCoeffs参数中用作输入的内容是什么?

    python - cv2中的可变fps(每秒帧数)

    c# - 改变物体的颜色而不损害纹理

    python - Fabric——使用父模块中的常见任务