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

PIL库将图片位深度是1、8、32统一转换为24的方法

深度学习中通常遇到各种各样的图片,位深度有的时候各不相同,容易影响训练测试,因此为了避免麻烦,一般将图片统一为位深度是24

  1. 通用转换方法
fromPILimportImagedefconvert_to_24bit(input_path,output_path):""" 将任意位深度的图片转换为24位RGB图像 参数: input_path: 输入图片路径 output_path: 输出图片路径 """# 打开图片img=Image.open(input_path)# 转换为RGB模式(24位)rgb_img=img.convert('RGB')# 保存图片rgb_img.save(output_path)print(f"转换完成:{input_path}->{output_path}")print(f"原始模式:{img.mode}, 转换后模式:{rgb_img.mode}")print(f"原始大小:{img.size}, 转换后大小:{rgb_img.size}")returnrgb_img# 使用示例convert_to_24bit('input.png','output_24bit.jpg')
  1. 针对不同位深度的详细转换方法
fromPILimportImageimportnumpyasnpdefconvert_specific_bit_depth(input_path,output_path):""" 针对不同位深度进行详细转换 """img=Image.open(input_path)print(f"原始图像信息:")print(f" 模式:{img.mode}")print(f" 大小:{img.size}")print(f" 位深度:{img.bits}(如果可用)")# 根据原始模式进行相应处理ifimg.mode=='1':# 1位黑白图像print("处理1位黑白图像...")# 方法1: 直接转换为RGBrgb_img=img.convert('RGB')# 方法2: 通过L模式中转(保留更多控制)# gray_img = img.convert('L')# rgb_img = gray_img.convert('RGB')elifimg.mode=='L':# 8位灰度图像print("处理8位灰度图像...")# 将灰度转换为RGB(三个通道值相同)rgb_img=img.convert('RGB')elifimg.mode=='P':# 调色板模式(通常是4位或8位)print("处理调色板图像...")# 先转换为RGBifimg.palette:print(f" 调色板模式:{img.palette.mode}")rgb_img=img.convert('RGB')elifimg.mode=='RGBA':# 32位RGBA图像print("处理32位RGBA图像...")# 创建白色背景background=Image.new('RGB',img.size,(255,255,255))# 将RGBA图像粘贴到白色背景上background.paste(img,mask=img.split()[3])# 使用alpha通道作为掩码rgb_img=backgroundelifimg.mode=='CMYK':# 32位CMYK图像print("处理CMYK图像...")rgb_img=img.convert('RGB')elifimg.mode=='RGB':# 已经是24位print("图像已经是24位RGB模式")rgb_img=imgelse:# 其他模式print(f"处理未知模式:{img.mode}")rgb_img=img.convert('RGB')# 保存图像rgb_img.save(output_path,quality=95)print(f"转换完成 ->{output_path}")print(f"转换后模式:{rgb_img.mode}")returnrgb_img
http://www.cnnetsun.cn/news/27060.html

相关文章:

  • 人机协同重构创作生态——生成式AI赋能内容产业的变革与思考
  • Java 小白求职者在互联网大厂的面试实录:从 Spring Boot 到微服务架构
  • V助手舆情分析智能体:重塑舆情分析,从“人找信息”到“信息为人”
  • 连接2026:十款远程控制软件真实力横评与选择指南
  • 计算机毕业设计springboot基于Spark++Vue.js的学生管理系统 Spark+Vue 高校学生综合信息管理平台 基于 SpringBoot+Spark+Vue 的全链路学生事务中心
  • JavaScript 集合操作的哈希碰撞:攻击者如何利用特殊 Key 导致 Map/Set 性能降级到 O(N)
  • 为什么 C盘空间会莫名其妙减少(即使没装新软件)?
  • 17、深入理解 Linux 文件系统机制与结构
  • 29、Linux 软件使用与故障排除指南
  • 从入门到转行:网络安全自学与跳槽的终极建议
  • 网络安全小白自学之路,别拜师了,求人不如求己_网络安全小白怎么自学
  • 从系统运维到网络安全工程师,8个月转行真实经验分享!
  • 算法系列(Algorithm)- 快速排序
  • RobotStudio2025全功能授权
  • IsaacLab中UR机械臂与Robotiq夹爪的5大配置难点与解决方案
  • cmark Markdown解析器终极指南:从入门到精通
  • 4-bit量化FLUX模型:让专业AI绘图走进寻常百姓家
  • Excel VBA快速入门:7天从零到精通终极指南
  • AutoHotkey鼠标轨迹自动化终极指南:从零开始实现精准操作回放
  • UxPlay 终极指南:在 Linux 系统上实现 AirPlay 镜像的完整教程
  • 1-2 惜败!国安亚冠连败 中超 16 强魔咒难破
  • 一键解锁阅读3.0书源终极合集:1629个精品资源任你选
  • 一般人不懂Windows
  • Java 基于多线程机制的专项实验
  • 51、Linux 系统中 shell 环境管理与脚本编写全解析
  • 53、编写高效 Shell 脚本:从基础到实践
  • 解锁共享单车数据:从入门到精通的完整分析指南
  • KOOM:如何快速解决Android应用内存泄漏的终极方案
  • API 测试- Postman Vs Rest Assured
  • 如何在React Native应用中实现语音交互?