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

大纲

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

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]= 32newImg = Image.fromarray(data)
newImg.save('alpha32.png')

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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎么理解接口幂等,项目中如何保证的接口幂等

都 2024 年了,竟然还有人不知道接口幂等是什么东西。 hi,大家好,我是 浮生 今天正好有空,给大家分享一下 幂等的实现。 什么是幂等? 一、问题解析 简单来说,就是一个接口,使用相同的参数重复执…

vivado ip manager cache

https://china.xilinx.com/video/hardware/configuring-managing-reusable-ip-vivado.html “Core Containers”(核容器):勾选Use Core Containers for IP(为 IP 使用核容器)即可使用核容器功能,该功能支持…

Nginx配置动静分离实例(Nginx处理静态资源)

Nginx动静分离概述 Nginx 动静分离是指动态请求跟静态请求分开,可以理解为使用Nginx处理静态页面(包含静态资源文件),Tomcat处理动态页面; 提醒一下:下面实例讲解是在Mac系统演示的; 两个方式…

MySQL 从零开始:03 基本入门语句

文章目录 1、连接数据库1.1 命令提示符登陆1.2 MySQL 8.0 Command Line Client 登陆1.3 MySQL Workbench 登陆 2、基本语句2.1 查看所有库2.2 创建库2.3 删除库2.4 选择数据库2.5 查看表2.6 创建表2.7 删除表2.8 改表名2.9 清空表 在上一小节中介绍了 MySQL 数据库的安装&#…

github新建仓库提交代码(本地命令行)

网页在home页面新建一个仓库之后&#xff0c;复制该仓库的URL&#xff0c;待会要用到在本地打开gitbash 进行初始化并将仓库克隆到本地git init git clone <刚刚复制的仓库URL>进入文件夹&#xff0c;创建文件&#xff0c;可以将要提交的内容写入文档cd <克隆下来的文…

抽象类与接口

什么是抽象类&#xff1f; public abstract class A{} //用abstract修饰的类就是抽象类 抽象类里面有什么&#xff1f; 抽象方法 普通方法 public abstract void speak();//用abstract修饰的方法叫做抽象方法 抽象类怎么使用&#xff1f; 我们通过另一个类继承抽象类&…

css选择器在python中如何使用

css选择器整理&#xff1a;https://blog.csdn.net/qq_40910788/article/details/84842951 目标&#xff1a;爬取某文章网站列表&#xff1a; 基础代码如下&#xff1a; import random import time import urllib.request import redef reptileTest(url):try:my_headers [&q…

【保姆级教程】【YOLOv8替换主干网络】【1】使用efficientViT替换YOLOV8主干网络结构

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

Ftrans飞驰云联荣获“CSA 2023安全创新奖”

2023年12月21日&#xff0c;第七届云安全联盟大中华区大会在深圳成功举办。会上&#xff0c;CSA大中华区发布了多个研究成果并进行 CSA 2023年度颁奖仪式&#xff0c;Ftrans飞驰云联以其突出的技术创新能力和广泛的市场应用前景&#xff0c;荣获备受瞩目的“CSA 2023安全创新奖…

对回调函数的各种讲解说明

有没有跟我师弟一样的童靴~&#xff0c;学习和使用ROS节点时&#xff0c;对其中的callback函数一直摸不着头脑的&#xff0c;以下这么多回调函数的讲解&#xff0c;挨个看&#xff0c;你总会懂的O.o 回调函数怎么调用,如何定义回调函数&#xff1a; 回调函数怎么调用,如何定义…

activiti流程图+动态表单

使用技术 jeecg-bootactivitivue3form-create 简单效果展示 流程图绘制 审批人配置 动态表单配置 流程审批 流程审批记录 填写表单信息 源码地址 后台&#xff1a;https://gitee.com/houshixin/jmg-boot前端&#xff1a;https://gitee.com/houshixin/jmg-ui

Dell 机架式服务器 - 高级定制

Dell 机架式服务器 - 高级定制 1. Dell Technologies2.1. Servers & Storage (服务器及存储) -> Servers2.2. Rack Servers (机架式服务器)2.3. Shop2.4. PowerEdge Rack Servers (PowerEdge 机架式服务器)2.5. PowerEdge R760 Rack Server (PowerEdge R760 机架式服务器…