You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python OpenCV将提取的绿色区域统一为相同颜色

解决方案

你当前代码的cv2.bitwise_and操作仅将非绿色区域像素置为0,绿色区域保留了原图的原始像素值,因此原本深浅不同的绿色会被保留,自然出现颜色不一致的问题。你只需要在得到绿色掩码后,将掩码覆盖的区域统一赋值为指定颜色即可,修改后的完整代码如下:

import numpy as np
import cv2

img = cv2.imread('test_img.jpg')
height, width = img.shape[:2] 
   
img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) 
    
# 修正原参数多余的第四位,HSV为3通道格式
lower_green = (35,45,0) 
upper_green = (80, 255, 255) 
img_mask = cv2.inRange(img_hsv, lower_green, upper_green)

# 方式1:保留原图背景,仅将识别到的绿色区域替换为统一绿色
img_result = img.copy()
# 括号内为BGR格式的颜色值,可自行调整数值获得想要的统一绿色
img_result[img_mask > 0] = (0, 255, 0)

# 方式2:和原输出逻辑一致,背景为黑,仅显示统一绿色的识别区域,可替换上方代码使用
# img_result = np.zeros_like(img)
# img_result[img_mask > 0] = (0, 255, 0)

cv2.imshow('color',img_result)
cv2.waitKey(0)
cv2.destroyAllWindows()

如果需要调整统一绿色的深浅、色调,直接修改(0,255,0)这组BGR数值即可,三个值分别对应蓝色、绿色、红色通道的亮度,取值范围为0-255。

内容的提问来源于stack exchange,提问作者Pupba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 07:54:08