Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何找到直线与Hough峰的交点?_Python_Opencv_Image Processing_Houghlinesp - Fatal编程技术网

Python 如何找到直线与Hough峰的交点?

Python 如何找到直线与Hough峰的交点?,python,opencv,image-processing,houghlinesp,Python,Opencv,Image Processing,Houghlinesp,我正在开发一种方法来定位车牌,并最终应用透视变换来水平拉直车牌 目前,我的图像处理管道能够大致定位车牌,但我想进一步缩小范围。我应用了边缘检测、形态学运算和连接成分分析来达到这个阶段 我目前的车牌检测结果如下 我正在尝试实现HoughLinesP来查找字体的直线,然后查找直线与houghleeps的交点,如下所示 下面的代码显示了我当前查找houghlines的尝试。然而,有谁能指导我如何找到霍夫峰?我在网上做了一些调查,找不到任何可靠的参考资料 def findHoughLines(sel

我正在开发一种方法来定位车牌,并最终应用透视变换来水平拉直车牌

目前,我的图像处理管道能够大致定位车牌,但我想进一步缩小范围。我应用了边缘检测、形态学运算和连接成分分析来达到这个阶段

我目前的车牌检测结果如下

我正在尝试实现HoughLinesP来查找字体的直线,然后查找直线与houghleeps的交点,如下所示

下面的代码显示了我当前查找houghlines的尝试。然而,有谁能指导我如何找到霍夫峰?我在网上做了一些调查,找不到任何可靠的参考资料

def findHoughLines(self, image):
    from src.Line import Line

    # Add 1 channel to binary image
    image = image[..., np.newaxis]
    vis = cv2.cvtColor(image, cv2.COLOR_GRAY2BGR)

    canny = cv2.Canny(image, 100, 200)

    cv2.imshow("canny", canny)

    lines = cv2.HoughLinesP(canny, rho=0.01, theta=np.pi/360, threshold=10, minLineLength=100, maxLineGap=30)

    print(len(lines))
    linesHorizontal, linesVertical = [], []

    if lines is None:
        print("[Info] No Hough lines have been detected")
        return image

    for line in lines:
        x1, y1, x2, y2 = line[0]
        if abs(x1 - x2) > abs(y1 - y2):
            linesHorizontal.append(Line(line[0]))
        else:
            linesVertical.append(Line(line[0]))

    # sort lines
    linesHorizontal = sorted(linesHorizontal, key=lambda l: l.d_y, reverse=True)[:10]
    linesVertical = sorted(linesVertical, key=lambda l: l.d_x, reverse=True)[:10]

    for line in linesHorizontal:
        x1, y1, x2, y2 = line.points
        cv2.line(vis, (x1, y1), (x2, y2), (0, 0, 255), 1)

    for line in linesVertical:
        x1, y1, x2, y2 = line.points
        cv2.line(vis, (x1, y1), (x2, y2), (0, 255, 0), 1)

    cv2.imshow("HoughLines", vis)
HoughLinesP检测结果


Hough peaks只是Hough矩阵中的峰值,或者换句话说,就是在累加器中通过一定票数的峰值。。。在
HoughLinesP
中,此操作已经完成,它将返回通过函数中给定的投票阈值的行(在您给出的代码中为5),感谢您的澄清。你认为有更好的方法来解决我的问题吗?我在车牌识别方面做得不多,但我认为你可以尝试找到轮廓,获得每个轮廓的底部坐标,并尝试创建一条适合每个轮廓底部点(具有一定公差)的线(可能使用RANSAC),对轮廓顶部执行相同操作,字母/数字具有固定的高度,您可以使用此基线了解哪些轮廓是字母。然后你把所有的点放在一起,使用minarealect(或类似的东西),它甚至可以给你提供旋转图像使其笔直所需的角度谢谢!这很有见地!我会试试看