我有一张图片,我想检测其中的蓝色矩形。我的老师告诉我:
- 将其转换为 HSV 颜色模型
- 定义一个阈值保持,使其成为具有我们想要检测的颜色的二值图像
那么我们为什么要这样做呢?为什么我们不直接 thresh 保存 rgb 图像?谢谢你的回答
我有一张图片,我想检测其中的蓝色矩形。我的老师告诉我:
那么我们为什么要这样做呢?为什么我们不直接 thresh 保存 rgb 图像?谢谢你的回答
您可以在此处找到问题的答案
基本总结就是HSV更适合物体检测,
OpenCV 通常以 8 位、无符号整数、BGR 格式捕获图像和视频。换句话说,捕获的图像可以被认为是 3 个矩阵,蓝色、红色和绿色,整数值范围从 0 到 255。
BGR 图像是如何形成的 在上图中,每个小方框代表图像的一个像素。在真实图像中,这些像素非常小,以至于人眼无法区分。
通常,可以认为 BGR 颜色空间更适合基于颜色的分割。但是 HSV 颜色空间是最适合基于颜色的图像分割的颜色空间。因此,在上述应用程序中,我将视频原始图像的颜色空间从 BGR 转换为 HSV 图像。
HSV 颜色空间由 3 个矩阵组成,“色调”、“饱和度”和“值”。在 OpenCV 中,“hue”、“saturation”和“value”的取值范围分别为 0-179、0-255 和 0-255。“色调”表示颜色,“饱和度”表示相应颜色与白色混合的量,“值”表示相应颜色与黑色混合的量。
根据http://en.wikipedia.org/wiki/HSL_and_HSV#Use_in_image_analysis:
因为数字图像中物体颜色的 R、G 和 B 分量都与照射到物体上的光量相关,因此它们相互关联,根据这些分量的图像描述使物体识别变得困难。色调/亮度/色度或色调/亮度/饱和度方面的描述通常更相关。
这里还有一些很好的信息
HSV 颜色空间通过将颜色(色调)与饱和度和伪照明分开来抽象化颜色(色调)。这使得它适用于实际应用程序,例如您提供的应用程序。
RGB中的R,G,B都与颜色亮度(我们松散地称为强度)相关,即我们无法将颜色信息与亮度分开。HSV 或色调饱和度值用于将图像亮度与颜色信息分开。这使得我们在处理或需要图像/帧的亮度时更容易。HSV 还用于颜色描述起着不可或缺的作用的情况。
干杯