如何在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
相关产品推荐
相关产品推荐

