当前位置: 首页 > news >正文

如何显示标注的纯黑mask图

文章目录

  • 前言
  • 一、二分类mask显示
  • 二、多分类mask显示

前言

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

一、二分类mask显示

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

	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图是单通道,所以这种操作也称为伪彩色映射)

代码如下(示例):

import cv2
import numpy as np
from PIL import Image
import globcolor_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'):  breakelif key == ord('n'):  idx = (idx + 1) % num_imagescv2.destroyAllWindows()

相关文章:

  • 第二章 智能家居子系统——C51单片机 配置波特率115200
  • Ribbon 负载均衡原理和策略
  • python解析wirshark抓包数据
  • electronjs入门-编辑器应用程序
  • 高并发架构设计(三大利器:缓存、限流和降级)
  • DAY02 c++对c的扩展
  • 二维码在区域巡查中的应用:隐患上报、巡逻巡更、管线巡查
  • 数据结构--图解单链表
  • 响应系统的作用与实现
  • 攻防世界-web-unseping
  • 如何设计短域名系统
  • V-for中 key 值的作用,如何选择key
  • 《洛谷深入浅出进阶篇》P3397 地毯————二维差分
  • 部署百川大语言模型Baichuan2
  • 经验篇:大数据常用工具集合
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • [LeetCode] Wiggle Sort
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • Angular 2 DI - IoC DI - 1
  • angular学习第一篇-----环境搭建
  • js对象的深浅拷贝
  • js中forEach回调同异步问题
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • maya建模与骨骼动画快速实现人工鱼
  • Python_OOP
  • spring boot下thymeleaf全局静态变量配置
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 分类模型——Logistics Regression
  • 回顾2016
  • 来,膜拜下android roadmap,强大的执行力
  • 前端工程化(Gulp、Webpack)-webpack
  • 软件开发学习的5大技巧,你知道吗?
  • 数组大概知多少
  • 一文看透浏览器架构
  • 你对linux中grep命令知道多少?
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​Python 3 新特性:类型注解
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (175)FPGA门控时钟技术
  • (3)llvm ir转换过程
  • (31)对象的克隆
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (java)关于Thread的挂起和恢复
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (三)终结任务
  • (五)c52学习之旅-静态数码管
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (转)shell中括号的特殊用法 linux if多条件判断
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • (转载)hibernate缓存