一,简介
本项目旨在开发一个基于OpenCV的图像处理工具,实现根据颜色从图片中自动抠图的功能。通过该项目,用户可以轻松指定一种颜色,系统将自动识别并提取该颜色的所有像素,生成新的图像。
二,实现方案
本方案基于OpenCV的图像处理,通过指定颜色范围,从输入图像中自动识别并提取该颜色的所有像素,生成新的图像。首先,通过颜色空间转换和掩码生成,实现颜色识别;然后,通过形态学操作修正掩码;最后抠出图像中对应掩码的区域。
三、算法实现步骤
3.1 cv2.inRange()选择抠出的颜色
将图像转化为hsv颜色空间,按照上表中的数值进行颜色选择,本次选择的颜色为红色,使用的函数为cv2.inRange(),
cv2.inRange 是 OpenCV 中的一个函数,用于生成一个掩码,该掩码包含在指定范围内的所有像素。
函数介绍:
src: 输入的图像,可以是灰度图或彩色图。
lowerb: 表示颜色范围的最低边界。它是一个数组,包含三个值:蓝色通道的下限、绿色通道的下限和红色通道的下限。
upperb: 表示颜色范围的最高边界。它也是一个数组,包含三个值:蓝色通道的上限、绿色通道的上限和红色通道的上限。
cv2.inRange 函数返回一个与 src 图像大小相同的掩码图像。在这个掩码图像中,像素值在 lowerb 和 upperb 范围内的像素会被设置为255(白色),表示这些像素属于指定的颜色范围;而其他像素则被设置为0(黑色),表示这些像素不属于指定的颜色范围。
使用方法:
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 生成检测红色区域的掩码
lower_red = np.array([0, 43, 46])
upper_red = np.array([10, 255, 255])
mask1 = cv2.inRange(hsv, lower_red, upper_red)
lower_red = np.array([156,