opencv - 检测图像中线条的好方法?

原文 标签 opencv image-processing feature-detection edge-detection hough-transform

我写了一些代码,使用 OpenCV 库来检测画在草地上的白线。我需要有人对我使用的方法发表意见(因为我确信有比我更好的方法)。此外,我得到的结果并不像我预期的那么好,因为图像的细微变化需要调整参数(我需要对固定参数进行操作)。

到目前为止我的方法:

  • 从网络摄像头抓取图像(并明显变成灰度)
  • 通过阈值过滤器运行它(使用 THRESH_TO_ZERO 模式,它将低于阈值的任何像素归零)。
  • 模糊图像
  • 通过侵 eclipse 过滤器运行它
  • 通过 Canny 边缘检测器运行它
  • 最后,使用这个处理过的图像并使用概率霍夫变换 HoughLinesP
  • 找到线条。

    我应该改变过滤器的顺序吗?

    附注我不太关心处理能力;我在 GPU B 上运行 HoughLinesP-)

    此外,这是一个示例图像:
    original image

    我得到的结果:
    与精明的
    with canny
    没有精明(稍微调整参数)
    no canny this time

    任何帮助或指导将不胜感激!我只是不知道该怎么做才能改进它!

    更新
    根据选择的答案使用非常快速的骨架实现(带有大量模糊)后,我得到了这个:
    it works!

    最佳答案

    我会尝试使用 skeleton representation的图像。在这里,您的精明的问题在于,由于线的宽度,它基本上会导致两条线。

    然后我会对它应用霍夫变换。

    关于opencv - 检测图像中线条的好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16665742/

    相关文章:

    opencv - 打印cv::Mat opencv

    python - 无法使用Anaconda 4.5 Python 3.6.6导入cv2

    c++ - 像素修改不能覆盖整个图像

    python - 使用 OpenCV 和 Python 检测接触/重叠的圆/椭圆

    java - 识别文本文件中的“数字”模式

    opencv - OpenCV-仅显示关键点而不使用SIFT显示图像

    matlab - 计算部分图像的平均值

    python - 在opencv python中分解同构矩阵

    c# - 调整图像大小以适合边界框

    c++ - OpenCV-FAST + BRIEF:如何使用DrawMatchesFlags::DRAW_RICH_KEYPOINTS绘制关键点?