Matplotlib图像读取和输出及jpg、png格式对比,及透明通道alpha设置

本文主要是介绍Matplotlib图像读取和输出及jpg、png格式对比,及透明通道alpha设置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

图像像素值

图像像素值一般size为3,也就是通道数,分别代表R,G,B,如果只有单一 一个值则表示灰度值,也就是说一张二维图片,当长和宽都为1080时,那么若是灰度图像,图像尺寸为(1080,1080,1)若是RGB图像则为(1080,1080,3),

jpg、png图像格式

jpg图像的灰度值范围和RGB范围为[0,255],数值类型为uint8,也就是无符号整数

png图像的灰度值范围和RGB范围在正常的[0,255]范围外,可以取[0,1],数值类型为float,在图像保存的时候会自动映射回[0,255]

jpg图像为有损压缩,在保存时可能会丢失图像细节

png图像为无损压缩

jpg不带有alpha透明通道

png带有alpha透明通道,也就是在传统rgb通道后还有一个alpha通道数

例如原来的例子中rgb图像的形状为(1080,1080,3),带有alpha通道就为(1080,1080,4)

plt.imshow()

plt.imshow()的参数为图像的像素矩阵,作用为将像素值输出为图像

import numpy as np
import matplotlib.pyplot as pltfigure1 = plt.figure()
image1 = np.random.random(size=(100, 100, 3))
plt.imshow(image1)
figure1.savefig('plot1.png')
plt.show()figure2 = plt.figure()
image2 = np.random.randint(0,255,size=(100, 100, 3))
figure2.savefig('plot2.jpg')
plt.imshow(image2)
plt.show()

这里分别初始化了两个像素矩阵,但是数值类型不同,分别为整形和浮点型

plot1

plot2

保存带有alpha透明通道的png图像

import numpy as np
import matplotlib.pyplot as pltimage1 = np.random.random(size=(100,100,4))
image1[:,:,3]=0.2plt.imshow(image1)
plt.savefig('transparent.png')
plt.show()

 

上述代码中的透明通道统一设置为了0.2,通明通道的取值范围为[0,1],值越小越透明,关于alpha值设置的详细配置信息可以参考我的另一篇博客Matplotlib颜色透明度设置-CSDN博客 

plt.imread()

plt.imread()的作用是读取本地图片并返回ndarray格式的数组,参数为图片路径

import numpy as np
import matplotlib.pyplot as pltimage1 = plt.imread('plot1.png')
image2 = plt.imread('plot2.jpg')print(type(image1),image1.dtype)
print(type(image2),image2.dtype)# <class 'numpy.ndarray'> float32
# <class 'numpy.ndarray'> uint8

 可以看到读取出来的数值类型为float和uint,对应了之前保存的格式

这篇关于Matplotlib图像读取和输出及jpg、png格式对比,及透明通道alpha设置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1146819

相关文章

VSCode设置python SDK路径的实现步骤

《VSCode设置pythonSDK路径的实现步骤》本文主要介绍了VSCode设置pythonSDK路径的实现步骤,包括命令面板切换、settings.json配置、环境变量及虚拟环境处理,具有一定... 目录一、通过命令面板快速切换(推荐方法)二、通过 settings.json 配置(项目级/全局)三、

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

C/C++的OpenCV 进行图像梯度提取的几种实现

《C/C++的OpenCV进行图像梯度提取的几种实现》本文主要介绍了C/C++的OpenCV进行图像梯度提取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录预www.chinasem.cn备知识1. 图像加载与预处理2. Sobel 算子计算 X 和 Y

c/c++的opencv图像金字塔缩放实现

《c/c++的opencv图像金字塔缩放实现》本文主要介绍了c/c++的opencv图像金字塔缩放实现,通过对原始图像进行连续的下采样或上采样操作,生成一系列不同分辨率的图像,具有一定的参考价值,感兴... 目录图像金字塔简介图像下采样 (cv::pyrDown)图像上采样 (cv::pyrUp)C++ O

Linux中的more 和 less区别对比分析

《Linux中的more和less区别对比分析》在Linux/Unix系统中,more和less都是用于分页查看文本文件的命令,但less是more的增强版,功能更强大,:本文主要介绍Linu... 目录1. 基础功能对比2. 常用操作对比less 的操作3. 实际使用示例4. 为什么推荐 less?5.

如何Python使用设置word的页边距

《如何Python使用设置word的页边距》在编写或处理Word文档的过程中,页边距是一个不可忽视的排版要素,本文将介绍如何使用Python设置Word文档中各个节的页边距,需要的可以参考下... 目录操作步骤代码示例页边距单位说明应用场景与高级用China编程途小结在编写或处理Word文档的过程中,页边距是一个

8种快速易用的Python Matplotlib数据可视化方法汇总(附源码)

《8种快速易用的PythonMatplotlib数据可视化方法汇总(附源码)》你是否曾经面对一堆复杂的数据,却不知道如何让它们变得直观易懂?别慌,Python的Matplotlib库是你数据可视化的... 目录引言1. 折线图(Line Plot)——趋势分析2. 柱状图(Bar Chart)——对比分析3

Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题

《Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题》:本文主要介绍Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未... 目录一、前言二、系统架构检测三、卸载旧版 Go四、下载并安装正确版本五、配置环境变量六、验证安装七、常见

使用Java将实体类转换为JSON并输出到控制台的完整过程

《使用Java将实体类转换为JSON并输出到控制台的完整过程》在软件开发的过程中,Java是一种广泛使用的编程语言,而在众多应用中,数据的传输和存储经常需要使用JSON格式,用Java将实体类转换为J... 在软件开发的过程中,Java是一种广泛使用的编程语言,而在众多应用中,数据的传输和存储经常需要使用j