opencv读写png

这篇具有很好参考价值的文章主要介绍了opencv读写png。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

[1] 测试了怎么手动加 alpha 通道设置透明度后,用 PIL.Image 存 png,通道顺序是 RGBA。这里测试用 opencv 读、写 1、3、4 通道的 png。

png 可以只存 3 通道的,即不要 alpha,也可以加上 alpha。而无 alpha 时 opencv 的通道顺序是 BGR,那加上 alpha 之后呢?

3-channel

import numpy as np
import cv2

# 写
bgr = np.zeros((28, 256, 3), dtype=np.uint8)
bgr[:, :, 0] = 255 # blue
cv2.imwrite("blue.png", bgr) # 3 通道,BGR
a = np.zeros((28, 256, 1), dtype=np.uint8) # alpha 通道
for i in range(256): # 渐变透明度
    a[:, i] = i
bgra = np.concatenate((bgr, a), axis=2) # BGRA 顺序
print(bgra.shape) # (28, 256, 4)
cv2.imwrite("blue_bgra.png", bgra) # 4 通道,BGRA

# 读
bgr_in = cv2.imread("blue.png") # 3 通道普通读
bgra_in = cv2.imread("blue_bgra.png") # 4 通道普通读
bgra_in2 = cv2.imread("blue_bgra.png", cv2.IMREAD_UNCHANGED) # 4 通道特殊操作
print(bgr_in.shape, bgra_in.shape, bgra_in2.shape) # (28, 256, 3) (28, 256, 3) (28, 256, 4)

# 对拍
print("diff bgr:", (bgr != bgr_in).sum()) # 0
print("diff bgr v.s. bgra_in:", (bgr != bgra_in).sum()) # 0
print("diff bgra:", (bgra != bgra_in2).sum()) # 0

output image

  • blue.png
    opencv读写png
  • blue_bgra.png

opencv读写png

conclusion

  • 不加 alpha 就还是 opencv 的 BGR 顺序,加了之后就是简单地变成 BGRA。
  • 3、4 通道 png 写都是一样的,用带特殊参数。
  • 读 3 通道 png 普通读就好,4 通道如果普通读就是简单舍弃 alpha,要保留 alpha 就加 cv2.IMREAD_UNCHANGED

1-channel

即灰度图,例如 MNIST 的数据。

  • 写时普通写就好;
  • 读时加 cv2.IMREAD_UNCHANGED,否则 opencv 会自动改成 3 通道。
import cv2
import numpy as np
from PIL import Image

img = np.tile(np.arange(256)[np.newaxis, :], (10, 1)).astype(np.uint8)
print(img.shape) # (10, 256)
cv2.imwrite("grey-cv2.png", img)
im1 = cv2.imread("grey-cv2.png")
print(im1.shape, im1.dtype) # (10, 256, 3), uint8
im2 = cv2.imread("grey-cv2.png", cv2.IMREAD_UNCHANGED)
print(im2.shape, im2.dtype) # (10, 256), uint8
print("diff:", (img != im2).sum()) # 0

opencv读写png文章来源地址https://www.toymoban.com/news/detail-486554.html

References

  1. python设置图像透明度
  2. How to save png images with OpenCV
  3. How to load png images with 4 channels?

到了这里,关于opencv读写png的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 怎么测试电脑的机械硬盘或SSD固态硬盘的读写速度?

    电脑的硬盘分机械硬盘和固态硬盘两种,机械硬盘一般读写速度慢,而固态硬盘就是因为读写速度比较快而受欢迎,早些年的电脑一般装的都是机械硬盘,用久了电脑都会变得比较卡。现在的电脑一般系统盘都是用的固态硬盘。如果你的电脑买的比较早,现在又比较卡的话,

    2024年02月09日
    浏览(45)
  • 单元测试、冒烟测试、集成测试、系统测试、回归测试、验收测试、Alpha、Beta

    1.冒烟测试 代码跑通即可。 这一术语源自硬件测试:测试一个硬件或硬件组件时,先直接加电,如果冒烟了,则无需进行后续测试。目的:判断是否可以进行后续的正式测试工作。 新编译的软件版本,确认其基本功能正常。 2、回归测试 修改后重新测试。 错误被修正后或软

    2023年04月13日
    浏览(70)
  • EasyNVR平台ONVIF教程:如何通过ODM工具手动输入onvif地址添加通道?

    EasyNVR属于轻量级的视频监控平台,可拓展性强、兼容度高,可支持RTSP/ONVIF协议接入前端设备。在接入前端设备时,可通过自带的ONVIF探测功能,将摄像头设备接入平台,并能实现云台控制,包括转动、变焦、放大等操作。 在实际使用场景中,因受到网络环境因素影响,在E

    2023年04月08日
    浏览(36)
  • 基于fpga的ddr3读写控制,纯verilog实现,能实现多通道图像数据读写控制

    基于fpga的ddr3读写控制,纯verilog实现,能实现多通道图像数据读写控制,模块接口清晰,可移植性高. 基于FPGA的DDR3读写控制是一项重要的技术,它为多通道图像数据的读写提供了高效的解决方案。本文将介绍一种纯Verilog实现的DDR3读写控制模块,旨在实现模块接口清晰、可移

    2024年04月12日
    浏览(55)
  • 快速解决Spine动画导入Unity后需要设置Straight Alpha Texture的问题

    在导入Spine资源后,Unity会根据不同的后缀,自动化构建出不同格式的资源。导入后,会发现播放的动画和导入前的动画的图片不一样。这时上网查基本都是需要手动吧材质资源的Straight Alpha Texture 勾上。 查看材质的Shader可以看出这个选项是用来选择颜色是否加了透明度的计算

    2024年02月16日
    浏览(35)
  • OpenCV - 图片增加透明通道,图片合并透明通道

    一般人像抠图相关的AI模型会输出一个Mask图,这个Mask图就是我们需要的可以将人物抠出来的Alpha通道信息,我们需要将这个Mask图附加到原始图片上,从BGR图片转成BGRA图片或者从RGB图片转成RGBA图片。 如果使用OpenCV进行图像处理,在为图像增加透明通道时会使用到 cv::split 和

    2024年02月16日
    浏览(36)
  • OpenCV 将单通道转换为三通道

    项目有个需求:图片传至图像算法库处理完成后需要返回结果图像进行再加工。 目前的情况是相机拍下来的图像是灰度图 传送图像指针给算法处理,算法处理完后将检测结果(eg. ok,ng)写入一张三通道图,只有这样才可以显示彩色文字 然后现在需要回传此三通道图片的指针

    2024年02月11日
    浏览(40)
  • OpenCV4通道的分离split(),通道的合并merge(),通道的混合mixChannels()

    opencv中默认imread函数加载图像文件,加载进来的是三通道彩色图像,色彩空间是RGB色彩空间,通道顺序是BGR(蓝色、绿色、红色),对于三通道的图像OpenCV中提供了三个API函数用以实现通道分离split(),合并merge(),混合mixChannels(); RGB图像,在opencv的Mat中,像素数据,存储结构

    2024年02月12日
    浏览(44)
  • 消防通道堵塞识别 opencv

    消防通道堵塞识别系统通过opencv+python网络模型技术,消防通道堵塞识别对消防通道的状态进行实时监测,检测到消防通道被堵塞时,将自动发出警报提示相关人员及时采取措施。OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉处理开源软件库,是由Int

    2024年02月16日
    浏览(38)
  • 02 OpenCV图像通道处理

    在数字图像处理中,图像通道是指一个图像中的颜色信息被分离为不同的颜色分量。常见的图像通道包括RGB通道、灰度通道、HSV通道等。 RGB通道是指将图像分离为红色、绿色和蓝色三个颜色通道,每个通道表示相应颜色的亮度。这种方式是最常见的方式,它对于彩色图像的处

    2024年02月12日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包