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

如何基于图像边界创建掩码?需实现绿圈、蓝黄区域的掩码生成

颜色区域掩码生成解决方案

问题根源

你当前代码的核心问题是颜色通道顺序不匹配:将图像从BGR转为RGB后,仍用BGR通道顺序定义颜色范围,导致cv2.inRange的阈值判断完全错误。此外,颜色阈值法易受光照、噪声干扰,如果你已经掌握区域边界坐标,用多边形填充生成掩码会更精准。


一、修复颜色阈值法提取绿色掩码

提供两种修正方案:

方案1:保留BGR格式处理

不转换图像通道,直接用BGR顺序定义颜色范围:

import cv2
import numpy as np
import matplotlib.pyplot as plt

img = cv2.imread(path + filenames[0], cv2.IMREAD_COLOR)
# 颜色范围保持[B, G, R]顺序
lower = np.array([0, 90, 0])
upper = np.array([50, 235, 100])
thresh = cv2.inRange(img, lower, upper)

plt.imshow(thresh, cmap='gray')
plt.show()

方案2:转RGB后匹配通道顺序

转换为RGB图像后,将颜色范围调整为[R, G, B]顺序:

import cv2
import numpy as np
import matplotlib.pyplot as plt

img = cv2.imread(path + filenames[0], cv2.IMREAD_COLOR)
RGB_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# 颜色范围改为[R, G, B]顺序
lower_rgb = np.array([0, 90, 0])
upper_rgb = np.array([100, 235, 50])
thresh_rgb = cv2.inRange(RGB_img, lower_rgb, upper_rgb)

plt.imshow(thresh_rgb, cmap='gray')
plt.show()

二、利用已知边界坐标生成精准掩码(推荐)

既然你已经掌握各区域的x、y边界坐标(如多边形顶点),直接用多边形填充生成掩码,完全不受颜色偏差影响:

示例代码(绿色眼睛区域)

假设green_eye_points是绿色眼睛的边界顶点列表(格式:[[x1,y1], [x2,y2], ..., [xn,yn]]):

import cv2
import numpy as np
import matplotlib.pyplot as plt

img = cv2.imread(path + filenames[0], cv2.IMREAD_COLOR)
# 创建与原图尺寸一致的空白单通道掩码
mask = np.zeros_like(img[:, :, 0])
# 转换顶点格式为cv2要求的int32类型
points = np.array(green_eye_points, dtype=np.int32)
# 填充多边形区域为白色(255)
cv2.fillPoly(mask, [points], 255)

plt.imshow(mask, cmap='gray')
plt.show()

蓝色、黄色区域只需替换对应的边界坐标列表即可复用此代码。


进阶优化:HSV颜色空间阈值

如果颜色阈值法仍不理想,可切换到HSV空间(对光照变化更鲁棒):

import cv2
import numpy as np
import matplotlib.pyplot as plt

img = cv2.imread(path + filenames[0], cv2.IMREAD_COLOR)
hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 绿色在HSV中的典型范围(可根据实际图像微调)
lower_hsv = np.array([40, 40, 40])
upper_hsv = np.array([70, 255, 255])
thresh_hsv = cv2.inRange(hsv_img, lower_hsv, upper_hsv)

plt.imshow(thresh_hsv, cmap='gray')
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 04:47:09