【问题标题】:Hough Lines in video视频中的霍夫线
【发布时间】:2015-01-22 15:04:42
【问题描述】:

我正在尝试在我的实时视频流中制作HoughLines。我只想检测 45 度左右的所有边缘,但输出视频的线条非常细,看起来像是在移动。它们不是固定的,也没有覆盖所有相关的边缘。

请看下面的代码:

import numpy as np
import cv2

cam = cv2.VideoCapture(0)

while (True):

    s, img = cam.read()

    winName = "Movement Indicator"
    cv2.namedWindow(winName, cv2.WINDOW_AUTOSIZE)

    edges = cv2.Canny(img, 100, 200)
    lines = cv2.HoughLinesP(edges, 1, np.pi / 4, 2, None, 10, 1)

    if lines is not None:
        for line in lines[0]:
            pt1 = (line[0], line[1])
            pt2 = (line[2], line[3])

            cv2.line(img, pt1, pt2, (0, 0, 255), 3)

    cv2.imshow('edges', edges)
    cv2.imshow('original', img)

    if cv2.waitKey(10) & 0xff == ord('q'):
        break

cam.release()
cv2.destroyAllWindows()

【问题讨论】:

  • 如果您可以发布指向您的原始帧之一的链接以及检测到边缘的相应图像,那将是一个好主意。然后有人可以将图像添加到您的问题中。但是,如果您正在寻找 45 度角,您是否尝试过 Sobel 并寻找 x 和 y 方向的梯度相等的位置?
  • 另外,发布 Canny 操作的结果。在该阶段删除了大部分数据。而且,您没有在代码中为“45 度”部分做任何事情。
  • a-jays 以 np.pi/4 给出的角度分辨率为 45 度。

标签: python opencv numpy hough-transform


【解决方案1】:

你只使用一个坐标数组:

for line in lines[0]:

使用这个:

    if lines is not None:
        for l in lines:
            for x1, y1, x2, y2 in l:
                cv2.line(img, (x1, y1), (x2, y2), (255, 255, 255), 20, 5)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-06
    • 1970-01-01
    • 2013-03-09
    • 2014-10-07
    • 2012-07-06
    • 1970-01-01
    • 2023-02-08
    • 1970-01-01
    相关资源
    最近更新 更多