import cv2
import numpy as np
# 读取灰度图
# 读取图像
img = cv2.imread('xxx.jpg')
# 转换到HSV颜色空间
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 定义绿色的HSV范围 (需根据实际图片微调)
# 通常绿色的H在35~85左右,可适当调整S和V范围以涵盖所需区域
lower_green = np.array([25, 50, 50])
upper_green = np.array([100, 255, 255])
# 创建绿色区域掩膜
mask = cv2.inRange(hsv, lower_green, upper_green)
# 白色通常具有较高的V值,较低的S值
lower_white = np.array([0, 0, 200]) # 白色的低阈值
upper_white = np.array([180, 50, 255]) # 白色的高阈值
mask1 = cv2.inRange(hsv, lower_white, upper_white)
# 拷贝一份HSV用于修改
hsv_modified = hsv.copy()
# 将绿色区域的H设为黄色(约30左右),S设高值,V保留原值
# 使用布尔索引对掩膜区域进行修改
hsv_modified[mask > 0, 0] = 30 # H频道设定为黄色色相 (~30)
hsv_modified[mask1 > 0, 0] = 30 # H频道设定为黄色色相 (~30)
# hsv_modified[mask > 0, 1] = 200 # S频道设定为最高,增强颜色饱和度
# V频道不变,保留原有明暗分布
# 转回BGR颜色空间
result = cv2.cvtColor(hsv_modified, cv2.COLOR_HSV2BGR)
# 显示结果
cv2.imshow("Original", img)
cv2.imshow("Yellow background", result)
cv2.waitKey(0)
数据扩增,绿牌变黄牌
于 2024-12-12 17:38:13 首次发布