使用opencv检测交通信号灯

时间:2018-04-19 10:30:30

标签: python opencv image-processing hough-transform

 import cv2 import numpy as np
 cap = cv2.VideoCapture(0)
while True:
    _, frame = cap.read() # frame olarak goruntuyu aldık
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
    lower_yellow = np.array([20,0,0])
    upper_yellow = np.array([40,255,255])
    mask = cv2.inRange(hsv, lower_yellow, upper_yellow)
    res = cv2.bitwise_and(frame,frame, mask= mask)
    img = cv2.medianBlur(res, 5)
    cimg = cv2.cvtColor(img, cv2.COLOR_HSV2BGR)
    cimg = cv2.cvtColor(cimg, cv2.COLOR_BGR2GRAY)
    circles = cv2.HoughCircles(cimg, cv2.HOUGH_GRADIENT, 1, 20,                  
                     param1=50, param2=30, minRadius=20, maxRadius=30)
    circles = np.uint16(np.around(circles))
    for i in circles[0, :]:
         cv2.circle(cimg, (i[0], i[1]), i[2], (0, 255, 0), 2)
         cv2.circle(cimg, (i[0], i[1]), 2, (0, 0, 255), 3)
    cv2.imshow('detected circles', cimg)
    cv2.imshow('res',res)
    k = cv2.waitKey(5) & 0xFF
    if k == 27:
        break
cv2.destroyAllWindows()

这是我的代码。我想通过图像处理检测直播流上的红绿灯。首先我会检测到黄色,然后我会在面具图像上找到圆圈。 我认为,错误发生在HoughCircles参数上。 但是有一个错误叫做:

错误:回溯(最近一次调用最后一次):文件“/home/yavuzhan/PythonProgramlama/venv/lib/python3.5/site-packages/numpy/core/fromnumeric.py”,第52行,在_wrapfunc中返回getattr (obj,method)(* args,** kwds)AttributeError:'NoneType'对象没有属性'round'

在处理上述异常期间,发生了另一个异常:

追溯(最近一次调用最后一次):文件“/ media / yavuzhan / DATA / 2017-2018 /OtonomAraçProjesi/ Dosya /OtonomAraçYazılım/ renkalgilama.py”,第30行,在圆圈中= np.uint16(np 。围绕(圆圈))

1 个答案:

答案 0 :(得分:1)

您收到AttributeError: 'None Type' object has no attribute 'round',因为circles中的circles = cv2.HoughCircles(cimg, cv2.HOUGH_GRADIENT, 1, 20, param1=50, param2=30, minRadius=20, maxRadius=30)为空。这是因为cv2.HoughCircles没有找到任何圈子。在稍后使用之前,您应该检查circles之类的if circles is not None

PS。尝试调整参数,以便cv2.HoughCircles找到可以使用的圆圈。并尝试阅读docs以自行确定问题。