我正在做一个项目,我必须检测交通信号灯(显然是圆圈)。现在,我正在处理从某个地点拾取的示例图像,但是经过我所有的努力,我无法获得检测正确圆圈(光)的代码。
这是代码: -
# import the necessary packages
import numpy as np
import cv2
image = cv2.imread('circleTestsmall.png')
output = image.copy()
# Apply Guassian Blur to smooth the image
blur = cv2.GaussianBlur(image,(9,9),0)
gray = cv2.cvtColor(blur, cv2.COLOR_BGR2GRAY)
# detect circles in the image
circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1.2, 200)
# ensure at least some circles were found
if circles is not None:
# convert the (x, y) coordinates and radius of the circles to integers
circles = np.round(circles[0, :]).astype("int")
# loop over the (x, y) coordinates and radius of the circles
for (x, y, r) in circles:
# draw the circle in the output image, then draw a rectangle
# corresponding to the center of the circle
cv2.circle(output, (x, y), r, (0, 255, 0), 4)
cv2.rectangle(output, (x - 5, y - 5), (x + 5, y + 5), (0, 128, 255), -1)
# show the output image
cv2.imshow("output", output)
cv2.imshow('Blur', blur)
cv2.waitKey(0)
我要检测圆圈的图像-
这是输出图像的内容:-
我尝试在霍夫变换中使用高斯模糊半径值和 minDist 参数,但没有取得太大的成功。
谁能指出我正确的方向?
PS- 一些题外话但对我的项目至关重要的问题-
1. 我的电脑大约需要 6-7 秒才能显示最终图像。是我的代码坏了还是我的电脑坏了?我的规格是 - Intel i3 M350 2.6 GHz(第一代)、6GB RAM、Intel HD Graphics 1000 1625 MB。
2. 霍夫变换会直接作用于二值阈值图像吗?
3. 这段代码在 Raspberry Pi 3 上的运行速度是否足够快以达到实时性?(我必须将它安装在移动的自主机器人上。)
谢谢!