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

如何在Python中为脑肿瘤检测边界内部添加透明色

Python实现脑肿瘤检测图像边界内部半透明填充

实现思路

识别图像中指定的边界颜色,提取边界轮廓并填充内部区域,再将同色半透明图层叠加到填充区域,匹配预期效果。

代码实现

1. 导入依赖库

import cv2
import numpy as np

2. 加载并预处理图像

# 读取原始图像(替换为你的图像本地路径)
img = cv2.imread("a0pMX.png")
# 转换为RGB格式便于颜色处理
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

3. 创建边界掩码与填充区域

# 定义目标边界的RGB颜色
border_rgb = (122, 160, 255)
# 转换为OpenCV使用的BGR格式
border_bgr = (border_rgb[2], border_rgb[1], border_rgb[0])

# 生成边界掩码:筛选出所有等于边界颜色的像素
border_mask = cv2.inRange(img, border_bgr, border_bgr)

# 提取边界轮廓并创建填充掩码
contours, _ = cv2.findContours(border_mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
fill_mask = np.zeros_like(border_mask)
for cnt in contours:
    # 填充轮廓内部区域
    cv2.drawContours(fill_mask, [cnt], -1, 255, thickness=cv2.FILLED)

4. 叠加半透明颜色层

# 设置透明度(0-1,值越低越透明)
alpha = 0.3
# 创建与原图尺寸一致的同色图层
color_layer = np.full_like(img_rgb, border_rgb, dtype=np.uint8)

# 仅在填充区域叠加半透明颜色
result = img_rgb.copy()
result[fill_mask == 255] = cv2.addWeighted(color_layer, alpha, result, 1 - alpha, 0)[fill_mask == 255]

# 转换回BGR格式保存或展示
result_bgr = cv2.cvtColor(result, cv2.COLOR_RGB2BGR)
cv2.imwrite("filled_tumor_result.png", result_bgr)
# 显示结果
cv2.imshow("填充后图像", result_bgr)
cv2.waitKey(0)
cv2.destroyAllWindows()

注意事项

  • 若边界存在缺口,填充可能溢出到外部,需确保边界为闭合轮廓;
  • alpha参数可按需调整,推荐范围0.2-0.4;
  • 需将图像路径替换为你本地的文件路径。

内容的提问来源于stack exchange,提问作者NX-DEV

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 16:07:50