【问题标题】:Finding horizontal and vertical lines using opencv使用opencv查找水平和垂直线
【发布时间】:2017-10-23 02:18:52
【问题描述】:

我正在尝试从图像中提取水平线和垂直线,以使用它们来找到它们相交的点。我将此页面用作参考,但我认为问题出在我不理解的 opencv 对象上。此参考是用 C++ 编写的,但我是用 Python 编写的。当我显示水平图像时,我只有一个完全黑屏,虽然我应该只有水平线的图像。 有谁知道我做错了什么?

参考: https://docs.opencv.org/3.2.0/d1/dee/tutorial_moprh_lines_detection.html

代码:

import cv2
import numpy as np
img = cv2.imread('msss.png')
blur_img = cv2.GaussianBlur(img, (5, 5), 0)
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow('image', gray_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
height, width = gray_img.shape
horizontal = gray_img.copy()
horizontal_size = int(width/30)
horizontal_struct = cv2.getStructuringElement(cv2.MORPH_RECT, 
                                             (horizontal_size, 1))
horizontal = cv2.erode(horizontal, horizontal, horizontal_struct, (-1, -1))
horizontal = cv2.dilate(horizontal, horizontal, horizontal_struct, (-1, -1))
cv2.imshow('image', horizontal)
cv2.waitKey(0)
cv2.destroyAllWindows()

【问题讨论】:

    标签: python image opencv


    【解决方案1】:

    嗯,您似乎正在寻找如何识别角落。如果是,您可以在 python 中尝试此参考:

    http://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_feature2d/py_shi_tomasi/py_shi_tomasi.html

    Obs.:您提供的链接是关于形态转换的。他们所说的“提取”是更改图像的参考,以使这些线条消失而不提供任何线条坐标参考。通常,这些转换有助于降低图像的噪点并帮助后续步骤(如图像分割)更容易。

    【讨论】:

    • 这适用于 2d 图像吗?我正在使用这个角检测来查找网格的角。
    • 是的。它应该有效。请问,你能用你的图片样本更新你的问题吗?
    • 我想我找到了,我使用的是 Sudoku 图像,我没有足够的声誉上传它,但它是整个 opencv 教程中使用的原型图像。我读了几本书,我认为哈里斯角检测可能更适合二维图像。
    【解决方案2】:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-13
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    • 2017-06-30
    • 1970-01-01
    相关资源
    最近更新 更多