在单通道彩图上踩的坑

news2024/11/25 11:40:46

使用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] = 0
    mask[(mask == 1) | (mask == 38)] = 1
    return 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 Image

def preprocess_mask(mask):
    mask = mask.astype(np.uint8)
    mask[mask == 0] = 0
    mask[(mask == 1) | (mask == 38)] = 1
    return 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.coloradmin.cn/o/1561572.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是ISP住宅IP?相比于普通IP它的优势是什么?

什么是ISP住宅IP? ISP住宅IP是指由互联网服务提供商(ISP)分配给住宅用户的IP地址。它是用户在家庭网络环境中连接互联网的标识符,通常用于上网浏览、数据传输等活动。ISP住宅IP可以是动态分配的,即每次连接时都可能会…

RabbitMQ高级-应用问题、集群搭建

1.消息补偿 消息可靠性保障:——消息补偿机制 需求:100%确保消息发送成功 2.幂等性保障 幂等性指一次和多次请求某一资源,对于资源本身应该具有同样的结果。也就是说,其任意多次执行对资源本身所产生的影响均与第一次执行的影响…

2024/3/31周报

文章目录 摘要Abstract文献阅读题目创新点实验数据研究区域数据和材料 方法XGBoost algorithmLong Short‑Term Memory AlgorithmEvaluation of the Model Accuracy 实验结果 深度学习XGBoost代码实现AdaBoostBoostingAdaBoost算法AdaBoost代码实现 总结 摘要 本周阅读了一篇基…

上海开放大学2024年春《过程控制技术》网上记分作业参考答案

答案:更多答案,请关注【电大搜题】微信公众号 答案:更多答案,请关注【电大搜题】微信公众号 答案:更多答案,请关注【电大搜题】微信公众号 电大搜题 多的用不完的题库,支持文字、图片搜题&am…

SD-WAN组网面临的安全挑战?如何提供有效的安全措施

SD-WAN(软件定义广域网)技术的广泛应用,企业面临着越来越多的网络安全挑战。尽管SD-WAN带来了灵活性和效率的提升,但其开放性和基于云的特性也带来了一系列安全威胁。本文将探讨SD-WAN组网面临的安全挑战,并提供一些有…

1236. 递增三元组:做题笔记

目录 暴力 代码 二分 代码 前缀和 代码 推荐视频讲解 暴力 这道题说的是有三个元素数量相同的数组,想知道有多少个三元组满足:三个数分别来自 A B C数组且呈现递增。 我想的是既然要求递增,那就先把数组数据都排一下序,…

鸿蒙:滑动条组件Slider

滑动条组件,通常用于快速调节设置值,如音量调节、亮度调节等应用场景。 说明 该组件从API Version 7开始支持。 子组件 无 接口 Slider(options?: {value?: number, min?: number, max?: number, step?: number, style?: SliderStyle, direc…

如何使用potplayer在公网环境访问内网群晖NAS中储存在webdav中的影视资源

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-D7WJh3JaNVrLcj2b {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

渐变颜色作图

clear clc close all % 生成 x 值 x linspace(0, 5, 1000); % 计算对应的 y 值(二次函数分布) y x .^ 2; % 添加一些随机噪声 y y randn(size(y)); clinspace(1,10,length(x)); arry1[x,y]; arry2sortrows(arry1,2,descend); arry3[arry2,c]…

LabVIEW双通道太阳射电频谱观测系统

LabVIEW双通道太阳射电频谱观测系统 开发了一个基于LabVIEW平台开发的双通道高速太阳射电频谱观测系统。该系统实时监测太阳射电爆发,具有随机性、持续时间短、变化快等特点。通过高速信号采集卡实现1.5 GS/s的信号采集,时间分辨率可达4ms,频…

跑腿小程序|基于微信小程序的跑腿平台小程序设计与实现(源码+数据库+文档)

跑腿平台小程序目录 目录 基于微信小程序的跑腿平台小程序设计与实现 一、前言 二、系统设计 三、系统功能设计 1、用户信息管理 2、跑腿任务管理 3、任务类型管理 4、公告信息管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、…

MySQL 优化及故障排查

目录 一、mysql 前置知识点 二、MySQL 单实例常见故障 故障一 故障二 故障三 故障四 故障五 故障六 故障七 故障八 三、MySQL 主从故障排查 故障一 故障二 故障三 四、MySQL 优化 1.硬件方面 (1)关于 CPU (2)关…

备战蓝桥杯---贪心刷题2

话不多说&#xff0c;直接看题&#xff1a; 首先我们大致分析一下&#xff0c;先排序一下&#xff0c;Kn&#xff0c;那就全部选。 当k<n时&#xff0c;k是偶数&#xff0c;那么结果一定非负&#xff0c;因为假如负数的个数有偶数个&#xff0c;那么我们成对选它&#xff0…

单链表的一些个人易错的问题(有理解不正确的地方请大佬指正)

请看下列代码 代码1&#xff1a;&#xff08;正确示范&#xff09; #include<stdio.h> #include<stdlib.h> struct node {int data;struct node *next;}; int main() {int n;int a;printf("请输入数字个数&#xff1a;");scanf("%d",&n)…

行车记录打不开?数据恢复有高招!

行车记录打不开&#xff0c;是许多车主在使用行车记录仪时常遇到的问题。当启动设备时&#xff0c;屏幕无反应或提示错误&#xff0c;让人不禁焦虑&#xff0c;担心重要的行车记录丢失。 行车记录打不开原因分析 行车记录打不开&#xff0c;其背后的原因可能复杂多样。硬件故障…

每日学习笔记:C++ STL算法分类

非更易型 更易型 移除型 变序型 排序型 已排序区间算法 数值型算法

【嵌入式系统设计师】软考2024年5月报名流程及注意事项

2024年5月软考嵌入式系统设计师报名入口&#xff1a; 中国计算机技术职业资格网&#xff08;http://www.ruankao.org.cn/&#xff09; 2024年软考报名时间暂未公布&#xff0c;考试时间上半年为5月25日到28日&#xff0c;下半年考试时间为11月9日到12日。不想错过考试最新消息…

行车记录打不开?别慌,数据恢复有高招!

行车记录打不开&#xff0c;这恐怕是许多车主都曾经遭遇过的烦恼。在驾驶途中&#xff0c;行车记录仪本应是记录美好瞬间、保障行车安全的重要工具&#xff0c;但一旦它出现打不开的情况&#xff0c;所有的期待与信赖便瞬间化为乌有。面对这种情况&#xff0c;我们该如何应对&a…

【C++的奇迹之旅(二)】C++关键字命名空间使用的三种方式C++输入输出命名空间std的使用惯例

文章目录 &#x1f4dd;前言&#x1f320; C关键字(C98)&#x1f309; 命名空间&#x1f320;命名空间定义&#x1f309;命名空间使用 &#x1f320;命名空间的使用有三种方式&#xff1a;&#x1f309;加命名空间名称及作用域限定符&#x1f320;使用using将命名空间中某个成员…

SAP ABAP批量复制PFCG角色并生效

文章目录 需求整体流程1. 检查角色是否存在2. 复制角色3. 批量生成参数文件4. 如果角色用户还是出现未比较&#xff0c;可在PFCG界面选择批量比较 细节上载模板代码&#xff1a; 小结 需求 最近碰到一个需求&#xff0c;需要对大批量的PFCG角色进行复制并使其生效 整体流程 …