OpenCV HSV色彩分割实战:从代码到结果

需积分: 43 16 下载量 98 浏览量 更新于2024-09-07 2 收藏 2KB TXT 举报
本篇代码是使用OpenCV库进行颜色分割的一个实例,主要展示了如何通过HSV(色度-饱和度-亮度)色彩空间对图像进行处理,以区分特定的颜色范围。OpenCV是一个广泛应用于计算机视觉和机器学习领域的开源库,尤其在图像处理、特征检测和机器识别方面有强大的功能。 首先,代码导入了必要的OpenCV头文件,如`<opencv2/core.hpp>`、`<opencv2/highgui.hpp>`和`<opencv2/imgproc.hpp>`,并使用了`cv`和`std`命名空间。程序的核心部分涉及以下几个步骤: 1. 图像读取:变量`img`用于存储输入图像,而`bgr`则是一个临时变量,用于存储原始的BGR颜色空间图像。 2. HSV图像转换:将`img`转换为HSV色彩空间,存储在`hsv`变量中。HSV颜色模型中,H代表色度(0-179),S代表饱和度(0-255),V代表亮度(0-255),相比于BGR,HSV更适合于颜色的区分。 3. 设置颜色阈值:定义了四个整型变量(`hmin`, `smin`, `vmin`, `hmax`, `smax`, `vmax`)来指定我们想要筛选的特定颜色范围。例如,这里可能设置了某种特定的色调(`hmin`到`hmax`)和饱和度与亮度的区间。 4. 颜色掩码创建:函数`inRange`被调用,它接受HSV图像、一个范围(由上述阈值确定)以及一个输出掩码。如果HSV像素值落在给定范围内,该像素在掩码上将被标记为白色(255),否则为黑色。 5. 颜色填充:遍历`bgr`图像中的每个像素,如果掩码中的相应位置为白色(即在选定颜色范围内),则将该像素的颜色复制到`dst`图像中。 6. 结果显示:使用`imshow`函数显示处理后的`dst`图像,并通过`imwrite`函数保存为名为"HSV_inRange.jpg"的文件,便于后续分析或查看。 7. 回调函数:`callBack`函数是窗口回调函数,当用户对图像进行交互时(如鼠标点击或键盘事件),会触发这个函数,执行颜色填充操作并实时更新显示。 总结来说,这段代码演示了如何使用OpenCV的HSV颜色模型进行颜色选择和图像分割,适用于需要对图像中的特定颜色进行高精度提取和分析的应用场景,如目标检测、物体识别等。通过调整阈值参数,可以灵活地适应不同的颜色选择需求。