【问题标题】:Error in houghtransform lines霍夫变换线中的错误
【发布时间】:2015-01-21 11:36:31
【问题描述】:

我正在尝试在网络摄像头上使用 Opencv 和 Python 获取霍夫线。

但是我收到一个错误,因为 Traceback(最近一次调用最后一次):文件“C:/Python27/Hough_video_try.py”,第 14 行,对于 rho,theta 在行 [0]:TypeError:'NoneType' 对象没有属性“getitem”

下面是我的代码,请帮忙

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/180,2,None,30,1)
  if lines is None:
    for rho,theta 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(1) & 0xff == ord('q'):
     break

  cam.release()
  cv2.destroyAllWindows()

【问题讨论】:

  • 哪一行触发了这个错误?
  • 使用if not lines is None,处理一个None对象有什么乐趣?
  • 显然lines is None;事实上,你已经明确检查了if lines is None,所以你应该真的知道这一点。你为什么要索引到None?!你的意思是if lines is not None
  • 这是我的一个愚蠢的错误。我在检查一个错误的条件。但是现在我遇到了一个特殊的错误,因为 Traceback(最近一次调用最后一次):文件“C:/Python27/Hough_video_try.py”,第 14 行,in for rho,theta in lines[0]: ValueError: too many values to unpack我在正确的条件下使用了与上面给出的相同的代码。请帮我解决这个错误
  • @Anurag 这可能是因为lines[0]返回的值多于2,所以返回的值不能只适合2个变量,我猜它返回4个值,请通过运行确认len(lines[0]) 它会给你一个没有的计数。返回的值,那么您可以使用 w,x,y,z = lines[0] 但不可以。变量的数量总是取决于函数调用的返回元素的数量。

标签: python opencv numpy hough-transform


【解决方案1】:

问题在于您正在检查

if lines is None:

    for rho,theta in lines[0]:

如果linesNone,你将如何获得None[0]

请更改条件

if lines is not None:

    for rho,theta in lines[0]:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-09
    • 2011-05-21
    • 2014-01-02
    • 1970-01-01
    相关资源
    最近更新 更多