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

RGBA图片格式转换为RGB格式(解决convert转换的失真问题)

使用convert转换的问题

OpenCV 的 cv2.cvtColor(…, cv2.COLOR_BGRA2GRAY) 会直接忽略 Alpha 通道的含义,将它当作第四个颜色通道来处理。
转换公式如下:

gray = 0.114*255 + 0.587*0 + 0.299*029

也就是说,即使 Alpha 为 0(完全透明),它也会参与这个公式,导致原本透明区域的像素值被错误地计算成一个“伪灰度值”。

我们保留透明区域为白色背景,解决代码如下(我们此处是转为了灰度图)

import cv2
import numpy as np# 读取RGBA图像
rgba_img = cv2.imread("data\\aug_data\\augmented_masks\\a1_aug0.png", cv2.IMREAD_UNCHANGED)# 创建一个与原图相同大小的白色 BGR 图像
adjust_img = np.ones((rgba_img.shape[0], rgba_img.shape[1], 3), dtype=np.uint8) * 255# 遍历像素点并根据alpha通道进行条件替换
for i in range(rgba_img.shape[0]):for j in range(rgba_img.shape[1]):val = rgba_img[i, j]  # val 是一个长度为4的数组if val[3] == 255:adjust_img[i, j] = val[:3]  # 复制 BGR 三通道
gray_mask = cv2.cvtColor(adjust_img, cv2.COLOR_BGR2RGB)
print(adjust_img.shape)
# 可选:显示或保存结果
cv2.imshow("Adjusted Image", gray_mask)
http://www.lryc.cn/news/591676.html

相关文章:

  • 利用node.js在本地搭建简易http服务器
  • 快慢指针的应用
  • RCU机制及常见锁的理解
  • web安全入门 | 记新手小白初次尝试挖越权漏洞
  • Ansible AWX 自动化运维
  • 3t车用手动卧式千斤顶设计含8张CAD图纸PDF图
  • parallels desktop windows win10无法复制文件无法共享剪切板
  • [NIPST AI]对抗性机器学习攻击和缓解的分类和术语
  • RocketMq集群高可用
  • Java并发编程第三篇(深入解析Synchronized)
  • 系统引导修复(2)
  • 《Java语言程序设计》1.2.5 复习题
  • Spring Boot 分层架构详解:Controller、Service、Mapper...
  • SLG 游戏如何进行防破解和防盗版保护?
  • 《迭代器 VS 生成器:Python 惰性计算的两种实现方案详解》
  • Scrapy无缝集成Pyppeteer:异步无头浏览器爬虫架构实战
  • 中科固源深度解析:DoIP 协议原理、应用与安全防护全流程
  • cnpm命令报internal/modules/cjs/loader.js:797 throw err; ^ Error: Cannot find
  • 第12章 存储类、链接和内存管理
  • python学智能算法(二十二)|SVM-点与超平面的距离
  • Adam优化器
  • 深入理解 KVM 子系统:从虚拟化核心到内核实现的全景解析
  • js对象简介、内置对象
  • 【中等】题解力扣21:合并两个有序链表
  • mysql——搭建MGR集群
  • Python清屏方法大全 - 终端清屏的几种实现方式
  • 【Android】EditText使用和监听
  • ELN:生物医药科研的数字化引擎——衍因科技引领高效创新
  • H7-TOOL脱机下载后,自动重连RTT,CAN和串口助手三合一模式方法,方便项目测试(2025-07-16)
  • Cocos游戏中UI跟随模型移动,例如人物头上的血条、昵称条等