如何显示标注的纯黑mask图

文章目录

前言

通常情况下,使用标注软件标注的标签图看起来都是纯黑的,因为mask图为单通道的灰度图,而灰度图一般要像素值大于128后,才会逐渐显白,255为白色。而标注的时候,不同类别的像素值是从1,2,3...这样的顺序,所以看起来是纯黑的。

一、二分类mask显示

若只是二分类,原本像素值就只有0和1的区分,那只需要将像素1转换为255即可显示白色,可使用inRange函数

c 复制代码
	cv::Mat img = cv::imread("C:/Users/WA.png",0);
	cv::Mat img_i;
	cv::inRange(img, 1, 1, img_i); // 上界和下界都为1,即只匹配值为1的像素;将值为1的像素设置为白色(255),其余像素为黑色(保持不变)
	cv::imshow("img", img);
	cv::imshow("img_i", img_i);

二、多分类mask显示

若存在多个类别,就需要给每个类别单独定义一种颜色。(彩色图是三通道的,mask图是单通道,所以这种操作也称为伪彩色映射)

代码如下(示例):

python 复制代码
import cv2
import numpy as np
from PIL import Image
import glob

color_map = np.zeros((256 * 3)).astype('uint8')
color_map[:3 * 13] = np.array([[0, 0, 0],   # 0像素还是得为0
                                  [41, 43, 204],  # 原像素值为1的
                                  [6, 128, 245],  # 原像素值为2的
                                  [36, 159, 67],
                                  [41, 43, 204],
                                  [190, 104, 145],
                                  [75, 86, 135],
                                  [195,120,219],
                                  [127, 127, 127],
                                  [18, 189, 187],
                                  [207, 190, 72],
                                  [233, 199, 178],
                                  [118, 187, 248]
                                  ],dtype='uint8').flatten()

def labeltocolor(mask):
    im=Image.fromarray(mask)
    im.putpalette(color_map)
    im=np.array(im.convert('RGB'))
    # cv2.imshow("1",im)
    # cv2.waitKey()
    # cv2.destroyAllWindows()
    return im


# 遍历文件夹中的所有图片
image_paths = glob.glob('C:/Users/Desktop/train01/01/mask/*.png')
idx = 0  # 当前图片索引
num_images = len(image_paths)  # 图片数量

for image_path in image_paths:
    # 加载单通道遮罩图(假设为灰度图)
    mask = cv2.imread(image_paths[idx], cv2.IMREAD_GRAYSCALE)

    # 将遮罩图像应用伪彩色映射
    mask_color = labeltocolor(mask)


    cv2.imshow('Result', mask_color)
    key = cv2.waitKey(0) 

    if key == ord('q'):  
        break
    elif key == ord('n'):  
        idx = (idx + 1) % num_images

cv2.destroyAllWindows()
相关推荐
聚客AI11 分钟前
向量数据库+KNN算法实战:HNSW算法核心原理与Faiss性能调优终极指南
人工智能·机器学习·语言模型·自然语言处理·transformer·agent·向量数据库
意.远16 分钟前
PyTorch线性代数操作详解:点积、矩阵乘法、范数与轴求和
人工智能·pytorch·python·深度学习·线性代数·矩阵
AIGC_ZY24 分钟前
使用 MediaPipe 和 OpenCV 快速生成人脸掩膜(Face Mask)
人工智能·opencv·计算机视觉
说私域39 分钟前
基于开源AI智能名片链动2+1模式S2B2C商城小程序的IP开发泡沫破局与价值重构研究
人工智能·小程序·开源·零售
JOYCE_Leo161 小时前
深度学习框架:PyTorch使用教程 !!
图像处理·人工智能·pytorch·深度学习·计算机视觉
嘉图明1 小时前
《技术驯化情感:AI伴侣、监控与伦理框架的重构挑战》
人工智能·重构
Jamence1 小时前
多模态大语言模型arxiv论文略读(五十二)
人工智能·语言模型·自然语言处理
PowerBI学谦1 小时前
Copilot 祝你走在AI前沿:2025 年 4 月动态
人工智能·copilot
陈苏同学2 小时前
[论文梳理] 足式机器人规划&控制流程 - 接触&碰撞的控制 - 模型误差 - 自动驾驶车的安全&合规(4个课堂讨论问题)
人工智能·安全·机器学习·机器人·自动驾驶·汽车
jndingxin3 小时前
OpenCV 图形API(74)图像与通道拼接函数-----合并三个单通道图像(GMat)为一个多通道图像的函数merge3()
人工智能·opencv