在单通道彩图上踩的坑

2024-04-02 00:04
文章标签 单通道 彩图

本文主要是介绍在单通道彩图上踩的坑,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

使用labelme后,生成如图所示文件夹,其中JPEGImages是原图,SegmentationClassPNG是标签。
在这里插入图片描述
此时SegmentationClassPNG中的标签(masks)是只包含0和1的二进制文件,0表示背景,1表示要识别的物体类型。(二分类),为单通道彩色图
在这里插入图片描述

在这里插入图片描述

查看图片的像素点:参考:Python查看图片模式及像素
在这里插入图片描述

src= Image.open(r"D:/CV/images/change/vocSample/SegmentationClassPNG/bad-003.png")print(src.mode)for y in range(src.size[1]):#行不变for x in range(src.size[0]):#列变化pix = src.getpixel((x,y))print(pix)

此时SegmentationClassPNG中图片的像素点如下:
在这里插入图片描述
由于原数据集较小,因此使用albumentations进行数据增强,由于cv2默认读取为BGR格式,因此masks变成了多通道彩色图。
在这里插入图片描述

在这里插入图片描述

1.将多通道彩色图转为单通道灰度图
在这里插入图片描述

from PIL import Image
import os 
path = 'D:\\CV\\images\\test\\masks' # 读取图片文件夹路径
save_path = 'D:\\CV\\images\\test\\masks_oneChennal'  # 保存图片文件夹路径
file_list = os.listdir(path) # 读取路径下所有图片的名字# 对每张图片进行转换
for file in file_list:o_img = Image.open(path+ '/' + file)L_img = o_img.convert('L') # 转换为灰度图片L_img.save(save_path + '/' + file)
print("已完成")

在这里插入图片描述

在这里插入图片描述
查看此时的像素点由0和38构成:
在这里插入图片描述

3.将图片的像素值变为只包含0或1的二进制文件。参考:数据增强系列(5)PyTorch和Albumentations用于语义分割

def preprocess_mask(mask):mask = mask.astype(np.uint8)mask[mask == 0] = 0mask[(mask == 1) | (mask == 38)] = 1return mask
src= Image.open("D:/CV/images/MyDataSet/UnetDataSet/test/UnetTestOut/new.png")
mat = np.array(src)
print(mat)
mask=preprocess_mask(mat)
print(mask)
dst = Image.fromarray(mask, 'P')
dst.save("D:/CV/images/MyDataSet/UnetDataSet/test/UnetTestOut/01.png")

原来的多通道图片转为单通道灰度图后,并不是完全由0或1构成,需要进行转换,如下图:
在这里插入图片描述

此时的01.png仅是只包含0和1的二进制文件
3.将单通道灰度图,变为单通道彩图,更容易区分,参考:numpy转PIL.Image: 处理Mask图像为单通道的彩色/灰度图colormap.png

import numpy as np
import PIL.Image as Imagedef preprocess_mask(mask):mask = mask.astype(np.uint8)mask[mask == 0] = 0mask[(mask == 1) | (mask == 38)] = 1return mask
src= Image.open("D:/CV/images/MyDataSet/UnetDataSet/test/UnetTestOut/new.png")
mat = np.array(src)
print(mat)
mask=preprocess_mask(mat)
print(mask)
dst = Image.fromarray(mask, 'P')
bin_colormap = [0,0,0] + [255,0,0]*254    # 二值调色板,红色
dst.putpalette(bin_colormap)
dst.save("D:/CV/images/MyDataSet/UnetDataSet/test/UnetTestOut/01.png")

在这里插入图片描述在这里插入图片描述

这篇关于在单通道彩图上踩的坑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/868478

相关文章

工业必备:SLM34x系列SLM340CK-DG 1A兼容光耦的单通道隔离驱动器

SLM34x系列SLM340CK-DG是单通道兼容光耦的隔离式栅极驱动器产品系列,适用于驱动IGBT、MOSFET。其峰值驱动电流1.0A。与光耦栅极驱动器相比,其性能和可靠性都得到显著的提升,同时保持了对光耦栅极隔离驱动器管脚的兼容。性能提升包括高共模瞬态抗扰度(CMTI)、低传播延迟和较小的脉宽失真。 SLM34x系列SLM340CK-DG的输入级是一个“模拟二极管”,与传统光耦相比,没

Vivado DDS IP核使用和仿真(一、单通道信号发生器)小补充

请先看上一篇博文:https://blog.csdn.net/u013215852/article/details/91042672 在此博文的最后,生成了同时输出正弦信号和余弦信号,一些读者对此有一些疑问,其实很简单,按照上一篇的设置,如果把output设置为Sine and Cosine,那么IP核会自动将输出的宽度扩大一倍,即16变成了32,根据下图可知高16位为SINE,低16位为COS

STM32G474采用“多个单通道ADC转换”读取3个ADC引脚的电压

STM32G474采用“多个单通道ADC转换”读取3个ADC引脚的电压:PC0、PA1和PA2。本测试将ADC1_IN6映射到PC0引脚,ADC12_IN2映射到PA1引脚,ADC1_IN3映射到PA2引脚。  1、ADC输入 ADC输入电压范围:Vref– ≤ VIN ≤ Vref+ ADC支持“单端输入”: 在“单端输入模式”下,“通道i”的模拟电压等于VINP[i]和VREF-之

Matlab进阶绘图第60期—带伪彩图的曲面图

带伪彩图的曲面图是曲面图与伪彩图的组合。 其中,伪彩图与曲面图的颜色用于表示同一个特征。 由于伪彩图无遮挡但不直观,曲面图直观但有遮挡,而将二者组合,可以实现优势互补。 本期就来分享一下带伪彩图的曲面图的绘制方法,先来看一下成品效果: 特别提示:本期内容『数据+代码』已上传资源群中,加群的朋友请自行下载。有需要的朋友可以关注同名公号【阿昆的科研日常】,后台回复关键词【绘图桶】查看加

屹晶微EG3002 单通道功率MOSFET驱动芯片 贴片SOP8

EG3002作为一款功率MOSFET驱动芯片,它的应用领域主要取决于其技术参数和性能特点。根据之前提供的信息,EG3002可能适用于以下领域: 1. 电源管理:用于高效率电源转换器,如开关电源(SMPS)、电池充电器、适配器等。   2. 电机控制:可用于控制直流电机、交流电机和步进电机,适用于家电、工业控制系统等。   3. 开关调节器:在需要快速开关调节的场合,EG3002可以驱动高电流MO

单通道电容感应芯片XW01T用于水位检测、人体感应

概述 XW01T SOT23-6封装和丝印 XW01T 是一个单通道电容感应芯片,广泛应用于水位检测,人体感应等应用场合。 特点 做非接触式液位检测和长按功能检测 自动环境校准 内置按键消抖,无需软件再消抖 嵌入共模干扰去除电路 每秒按键反应速度可达 20 次 上电立刻判断按键有效状态 按键有效时长无穷大 2.5V~5.5V 宽工作电压 SOT23_6(SOT26)封装 应用

centos 7 虚拟化单通道光纤 udev 的配置

常见多为multipath.conf的配置方式 这是单通道配置方式 # for disk in /dev/sd*; do echo "WWID of $disk is: $(/lib/udev/scsi_id -g -u -d $disk)"; doneWWID of /dev/sda is: 3600224806c54328a8971625988b0c043WWID of /dev/sd

MS21112S单通道 LVDS 差分线路接收器

MS21112S 是一款单通道低压差分信号 (LVDS) 线 路接收器。在输入共模电压范围内,差分接收器可以 将 100mV 的差分输入电压转换成有效的逻辑输出。 该芯片可应用于 100Ω 的受控阻抗介质上,进行点对 点基带数据传输。传输介质可以是印刷电路板、背板 或电缆。数据传输速率和距离取决于介质的衰减特 性、工作的噪声环

将点云Z向数据生成伪彩图、灰度图(最小值和最大值区间映射RGB三通道)

C# 指针遍历+for循环多线程 public unsafe static HObject PointXYZ_To_GrayColorHobject(ref PointXYZ[] PointCloudData, int ImgWidth, int ImgHeight, float ZMin, float ZMax,out HObject colorImg){try{HObject ImgHob

stm32AD单通道与多通道转换(DMA)

第三章AD转换 本章的内容分两部分,第一是AD的单通道转换,第二是AD的多通道转换。首先先将单通道转换。 STM32中自带的AD最大的转换频率是14MHZ,共有16个转换通道,每个转 ADC123_IN10表明PC0管脚可以作为AD1,AD2,AD3的第10通道。 下面我们将PC0配置成AD1的通道10为例进行讲解。 3.1首先我们应将PC0设置成模拟输入: #include "a