使用numpy处理图片——基础操作

news2024/10/6 1:44:15

大纲

  • 准备工作
  • 图片像素大小
  • 修改透明度

numpy是一款非常优秀的处理多维数组的Python基础包。在现实中,我们最经常接触的多维数组相关的场景就是图像处理。本系列将通过若干篇对图像处理相关的探讨,来介绍numpy的使用方法,以获得直观的体验。
本系列使用的照片使用的是RGBA色彩空间模型,即一个像素点,要通过R(Red红色)、G(Green绿色)、B(Blue蓝色)和A(Alpha通道)组成。前三种三原色比较好理解,即一个颜色可以通过红绿蓝三种颜色组成;Alpha则是代表透明度,0代表完全透明,255代表完全不透明,中间的数值则代表相应程度的半透明。
在这里插入图片描述

请添加图片描述请添加图片描述
可以看到Alpha 255的图片,背景是白色的,且是不透明的;而Alpha 0背景区域是完全透明。
一张图片,我们看成是一个像素组成的二维数组;
在这里插入图片描述
如果每个像素用RGBA表示,则演变成一个三维数组。只是之前的每个元素变成了一个长度为4的维度。

准备工作

下面是一张960*1536,背景色是白色,完全不透明的图片——example.png。后面我们将针对这张图片做相关处理。
请添加图片描述
为了能读取图片,我们需要安装另外一个python包

pip3 install pillow

图片像素大小

如果翻译成numpy相关的知识,就是获取数组的大小。这儿我们要使用shape属性。

from PIL import Image
import numpy as np
img = Image.open('example.png')
data = np.array(img)
print(data.shape)

(960, 1536, 4)

可以见得我们将图片变成了一个3维数组:960表示高度,1536表示宽度,4表示深度。
在这里插入图片描述

修改透明度

如果翻译成numpy相关的知识,就是修改数组中第三个维度(RGBA)的第四个位置(A)的值。

from PIL import Image
import numpy as np
img = Image.open('example.png')
data = np.array(img)

data[:,:,3]= 32

newImg = Image.fromarray(data)
newImg.save('alpha32.png')

上面代码将Alpha通道值改成了32,即一种半透明状态。
代码的第6行,第一个“:”表示所有的第一维度(高),第二个“:”表示所有的第二维度(宽),3表示Alpha通道所在的RGBA中的下标。
这种写法,比逐个遍历数据要方便的多。
请添加图片描述

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

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

相关文章

主食冻干哪款好?十大放心主食冻干名单推荐

作为养猫的人,我们都知道每天最担心的事情就是如何为心爱的猫咪选择一款高品质的猫粮。我们都希望为猫咪提供最好的营养,让它们健康快乐地成长。然而,近期的一些事件,如百利猫粮生虫和VE主食冻干掰开有虫,让我们不得不…

【开源商城推荐-LGPL-3.0】ts-mall 聚惠星商城

dts-shop: 聚惠星商城 DTS-SHOP,基于 微信小程序 springboot vue 技术构建 ,支持单店铺,多店铺入驻的商城平台。项目包含 微信小程序,管理后台。基于java后台语言,已功能闭环,且达到商用标准的一套项目体…

AI文本朗读应用(二)

调用api实现TTS 注:如对api的使用有任何疑问,可以查阅文本转语音 REST API。 选择右侧“解决方案资源管理器”中的“TTS_Demo”,右键选择“添加”->“新建项”。 选择“类”,名称为“Authentication.cs”,点击“添…

【漏洞复现】锐捷EG易网关cli.php后台命令执行漏洞

Nx01 产品简介 锐捷EG易网关是一款综合网关,由锐捷网络完全自主研发。它集成了先进的软硬件体系架构,配备了DPI深入分析引擎、行为分析/管理引擎,可以在保证网络出口高效转发的条件下,提供专业的流控功能、出色的URL过滤以及本地化…

14:00面试,14:07就出来了,问的问题有点变态。。。

前言 刚从小厂出来,没想到在另一家公司我又寄了。 在这家公司上班,每天都要加班,但看在钱给的比较多的份上,也就不太计较了。但万万没想到一纸通知,所有人不准加班了,不仅加班费没有了,薪资还…

Zustand 状态管理

Zustand 状态管理 安装创建 Store给 Store 添加TS类型约束在页面使用 Store返回 Store 中所有状态在 Store 中使用 async 异步方法使用 Immer Middleware (中间件) 更新深层嵌套的 State使用 get 方法,在 set 方法外访问 State 中的数据使用 selector什么是 selecto…

炫技作品!极好!独家原创!一种新型改进的蜣螂优化算法(CCCDBO)

炫技作品!,独家原创! 蜣螂优化算法DBO的含金量不用我多介绍了吧,这是和麻雀优化算法SSA同一个课题组出的算法,业内公认的比较好的算法,这个算法认可度很高! 一种新型改进蜣螂优化算法&#xf…

【web缓存】nginx和CDN应用

目录 一、代理的工作机制 二、代理服务器的概念 三、代理服务器的作用 四、常用的代理服务器 五、nginx缓存代理部署 步骤一:首先脚本完成三台nginx的部署 步骤二:在两个后端原始服务器上分别创建测试页面 步骤三:完成nginx缓存服务器…

中央处理器CPU(2)---流水CPU与RISC

1.流水CPU (一看到这个就想起老家的流水席了,不知道各位吃过没。) 🌈1.1并行处理技术 对于计算机来说不论如何发展,最重要的一个追求目标就是很高的运算速度,冯诺依曼机是,现代计算机依然是&…

高效实用的电商数据分析产品之店铺分析如何入手?

在电商行业,如何做好店铺分析?应该从哪几个方面进行? 1、寻找竞品店铺 在众多店铺中找到与自己风格(定位/用户群体等)相仿的相关竞争对手的标签。研究竞品店铺中爆款产品作为一个店铺运营(新品开发等&…

HubSpot CRM:卓越客户服务的关键引擎

在数字化时代,提供卓越的客户服务是企业成功的关键之一。HubSpot CRM以其强大的功能和灵活性,成为实现卓越客户服务的关键引擎,以下是强调HubSpot CRM在客户服务中的应用的关键方面: 1. 全面的客户视图 HubSpot CRM集成了全面的…

解决:接口中返回的文本不能保持原本格式也无法换行

一、问题&#xff1a; 原本传入的文本是有换行的&#xff0c;但是用div展示接口返回的文本&#xff0c;所示内容没有保持原有格式没达到换行效果 以下是传入到接口的文本格式 使用div标签展示接口返回的文本&#xff0c;但并没有保持原有格式&#xff0c;文本也没换行 <di…

docker 容器添加指定网络地址

docker 容器添加指定网络地址 在搭建halo博客时&#xff0c;准备让 halo、mysql8.1、nginx 三个容器在同一个网段中&#xff0c;并指定IP。 实现docker内部容器之间网络互通。 查看容器网络信息命令 docker inspect 容器名各容器部署成功后网络效果如下&#xff1a; nginx …

城堡世界源码

随着数字技术的飞速发展和人们对于娱乐需求的不断提升&#xff0c;城堡世界源码开发逐渐成为了新的热门话题。城堡世界是一个集潮流、艺术、科技于一体的数字娱乐新领域&#xff0c;通过将虚拟现实、增强现实等技术融入传统玩具设计中&#xff0c;为玩家们带来了全新的互动体验…

如何高效阅读Linux的man page

有时候需要在man page中查某个命令的用法&#xff0c;我们一般会使用man command的方式来查询&#xff0c;例如man vmstat.但是对于一些bash内置的命令&#xff0c;如alias,如果使用man alias会打开General Commands Manual ,如下图 可以看到&#xff0c;内置命令很多&#xff…

计算机毕业设计---ssm实验室设备管理系统

项目介绍 ssm实验室设备管理系统。前台jsplayuieasyui等框架渲染数据、后台java语言搭配ssm(spring、springmvc、mybatis、maven) 数据库mysql8.0。该系统主要分三种角色&#xff1a;管理员、教师、学生。主要功能学校实验设备的借、还、修以及实验课程的发布等等&#xff1b;…

使用kennycason.kumo.WordCloud For JAVA 制作词云图

官网&#xff1a;https://kennycason.com/posts/2014-07-03-kumo-wordcloud.html 一&#xff1a;添加POM文件 <!-- 词云 --><dependency><groupId>com.kennycason</groupId><artifactId>kumo-core</artifactId><version>1.27<…

【Verilog】期末复习——分别画出下面两个程序综合后的电路图/reg型数据和wire型数据的区别

系列文章 数值&#xff08;整数&#xff0c;实数&#xff0c;字符串&#xff09;与数据类型&#xff08;wire、reg、mem、parameter&#xff09; 运算符 数据流建模 行为级建模 结构化建模 组合电路的设计和时序电路的设计 有限状态机的定义和分类 期末复习——数字逻辑电路分…

认识Linux指令之 “find grep” 命令

01.find指令&#xff1a; -name Linux下find命令在目录结构中搜索文件&#xff0c;并执行指定的操作。 Linux下find命令提供了相当多的查找条件&#xff0c;功能很强大。由于find具有强大的功能&#xff0c;所以它的选项也很多&#xff0c;其中大部分选项都值得我们花时间来…

LeetCode 84:柱状图中的最大矩形

一、题目描述 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 示例 1: 输入&#xff1a;heights [2,1,5,6,2,3] 输出&#xff1a;10 解释&#xff1a…