您现在的位置是:网站首页> 编程资料编程资料
Python+OpenCV绘制多instance的Mask图像_python_
2023-05-26
287人已围观
简介 Python+OpenCV绘制多instance的Mask图像_python_
目标:Mask中,不同值表示不同的实例(instance),在原图中,绘制不同的instance实例,每个实例用不同颜色表示,实例边界用白色表示。
源码:
def generate_colors(n_colors, seed=47): """ 随机生成颜色 """ np.random.seed(seed) color_list = [] for i in range(n_colors): color = (np.random.random((1, 3)) * 0.8).tolist()[0] color = [int(j * 255) for j in color] color_list.append(color) return color_list def draw_mask_layers(image, mask_layers, mask_tk=1): """ 绘制多层的mask,包含mask的边界,mask中不同值表示不同的instance :param image: 3通道图像 :param mask_layers: 多instance的mask :param mask_tk: 边界的厚度 :return: 绘制边界框 """ img_copy = copy.copy(image) # 拆分Mask h, w = mask_layers.shape[:2] mask_id = np.unique(mask_layers)[1:] # 获取Mask的ID, 0是背景 masks = [] for i in mask_id: m = np.zeros((h, w), dtype=bool) m[mask_layers == i] = True masks.append(m) # 绘制颜色区域 color_list = generate_colors(len(masks)) for idx, mask in enumerate(masks): img_copy[mask] = color_list[idx] # 绘制颜色框 image = cv2.addWeighted(image, 0.5, img_copy, 0.5, 0) # 合并mask # 绘制边界,边界不需要透视效果 for idx, mask in enumerate(masks): cnt_mask = np.zeros((h, w)) cnt_mask[mask] = 255 cnt_mask = cnt_mask.astype(np.uint8) contours, _ = cv2.findContours(cnt_mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) cv2.drawContours(image, contours, -1, (255, 255, 255), mask_tk) # 绘制白色边界 return image
原图:

Mask图像:

以上就是Python+OpenCV绘制多instance的Mask图像的详细内容,更多关于Python OpenCV Mask图像的资料请关注其它相关文章!
您可能感兴趣的文章:
相关内容
- 详解Python如何批量检查图像是否可用_python_
- Python Pandas处理CSV文件的常用技巧分享_python_
- python实现简单贪吃蛇小游戏_python_
- Python实现简单扫雷游戏_python_
- python GUI编程实现扫雷游戏_python_
- 详解Python图像形态学处理(开运算,闭运算,梯度运算)_python_
- Python使用JSON库解析JSON数据的方法_python_
- Flask使用SocketIO实现WebSocket与Vue进行实时推送_python_
- flask上使用websocket的方法示例_python_
- Flask框架之数据交互的实现_python_
