【OpenCV + VS】从纯色的背景中扣出前景然后对背景颜色进行转换
在图像处理中,色彩空间转换是非常重要的步骤,尤其是在图像提取、颜色识别和分析时。通过 OpenCV 提供的 cvtColor() 函数,可以方便地在不同的色彩空间之间进行转换。常见的转换包括 BGR 到 HSV、BGR 到灰度等。而 inRange() 函数可以帮助我们提取图像中的特定颜色区域,常用于颜色过滤和图像分割。
本文将详细讲解如何使用 OpenCV 进行色彩空间转换,并利用 inRange() 提取图像中的特定颜色区域。
1. 基本概念
1.1 BGR 到 HSV
BGR 是 OpenCV 默认的图像格式,表示蓝色、绿色和红色三种颜色通道。而 HSV 是基于色调、饱和度和亮度的颜色模型。与 BGR 模型不同,HSV 更加直观地表示颜色,通常在颜色提取和过滤中使用。通过 cvtColor() 函数,可以方便地将 BGR 图像转换为 HSV 图像。
cvtColor(image, hsv, COLOR_BGR2HSV);
1.2 inRange() 函数
inRange() 是一个非常有用的函数,用于根据给定的颜色范围提取图像中的指定颜色区域。它会生成一个二值掩膜,掩膜中满足条件的像素为白色(255),不满足条件的像素为黑色(0)。通常结合其他操作(如 bitwise_and() 或 copyTo())使用,从图像中提取特定区域。
inRange(hsv, Scalar(36,