将 HSV 转换为灰度以应用 Hough 变换
Converting HSV to Grayscale for application of Hough transform
我正试图从我的自主机器人的摄像头馈送中滤除交通信号灯。我将捕获的帧转换为 HSV 色彩空间,对它们进行阈值处理,直到我能够检测到所有与红绿灯大致 "red" 的红色物体,然后我应用霍夫变换找出其中的红灯(这是显然是一个圆圈)。
现在的问题是,我发现 Hough 变换仅适用于单通道图像,而我似乎正在使用三个,所以我尝试使用以下代码将 HSV 阈值图像转换为灰度图像-
imgFinal = thresholded #initialising the variable with the thresholded image.
framenew = cv2.cvtColor(threshNew, cv2.COLOR_HSV2GRAY)
但是在 运行 期间我收到一条错误消息说 'module' 对象没有属性 'COLOR_HSV2GRAY'。我发现了几个关于这个主题的问题,但 none 是我问题的答案。我只需要检测红色交通灯,我尝试分开通道,但我不知道如何继续使用该方法。我也对任何其他方法持开放态度。
谢谢!
P.S- 这可能是题外话,但是你们都建议为这个项目使用哪种语言? C++ 还是 Python?我已经为两者编写了代码,我只是对使用哪一个感到困惑。我目前正在我的 Windows 8.1 PC 上开发它,但它需要 运行 在 Raspberry Pi 3 上用于最终项目。
HSV 的 V 通道有点像灰度图像,但它与 BGR2GRAY 灰度图像不同。
这是从 BGR2GRAY 计算的灰度图像:
而这是 HSV 图像的 V 通道:
如果您需要某些东西 "better",您可以随时将 HSV 图像转换回 BGR,然后使用 openCV 代码将 BGR 转换为 GRAY。
我正试图从我的自主机器人的摄像头馈送中滤除交通信号灯。我将捕获的帧转换为 HSV 色彩空间,对它们进行阈值处理,直到我能够检测到所有与红绿灯大致 "red" 的红色物体,然后我应用霍夫变换找出其中的红灯(这是显然是一个圆圈)。
现在的问题是,我发现 Hough 变换仅适用于单通道图像,而我似乎正在使用三个,所以我尝试使用以下代码将 HSV 阈值图像转换为灰度图像-
imgFinal = thresholded #initialising the variable with the thresholded image.
framenew = cv2.cvtColor(threshNew, cv2.COLOR_HSV2GRAY)
但是在 运行 期间我收到一条错误消息说 'module' 对象没有属性 'COLOR_HSV2GRAY'。我发现了几个关于这个主题的问题,但 none 是我问题的答案。我只需要检测红色交通灯,我尝试分开通道,但我不知道如何继续使用该方法。我也对任何其他方法持开放态度。
谢谢!
P.S- 这可能是题外话,但是你们都建议为这个项目使用哪种语言? C++ 还是 Python?我已经为两者编写了代码,我只是对使用哪一个感到困惑。我目前正在我的 Windows 8.1 PC 上开发它,但它需要 运行 在 Raspberry Pi 3 上用于最终项目。
HSV 的 V 通道有点像灰度图像,但它与 BGR2GRAY 灰度图像不同。
这是从 BGR2GRAY 计算的灰度图像:
而这是 HSV 图像的 V 通道:
如果您需要某些东西 "better",您可以随时将 HSV 图像转换回 BGR,然后使用 openCV 代码将 BGR 转换为 GRAY。