使用numpy处理图片——滤镜

大纲

  • 3维数组切分
    • 打平重组法
    • 深度切分法
  • 3维数组堆叠

我们在用手机拍照片时,往往会对照片进行滤镜处理,从而让照片更加美观。本文我们将实现几种滤镜效果——去除所有像素中的某一种原色,形成只有红绿、红蓝和绿蓝原色的照片。
为了突出色彩丰富性,我们借用梵高的《星空》为测试照片。
在这里插入图片描述
在《使用numpy处理图片——基础操作》一文中,我们介绍了RGBA色彩空间模型。本文我们将忽略Alpha通道,只考虑RGB模型。于是我们得到的数组将是height * width * 3,其中的3是RGB的值所在的维度长度。
在这里插入图片描述
我们希望把上图中不同原色的数组进行切分,然后通过不用原色的组合获得新图片。
在这里插入图片描述
这儿涉及两个问题:

  • 三维数组切分
  • 三维数组堆叠

3维数组切分

3维数组切分有两种方法。一种是将三维数组打平,然后切片找到相同原色对应的元素,最后重组出长宽不变,但是深度为1的3维数组,我们称之为打平重组法;另外一种就是按深度进行切分,我们称之为深度切分法。

打平重组法

import numpy as np
from PIL import Image

img = Image.open('the_starry_night.jpg')
data = np.array(img)

dataOneDim = data.reshape(data.size)
red = dataOneDim[0::3].reshape((data.shape[0], data.shape[1], 1))
green = dataOneDim[1::3].reshape((data.shape[0], data.shape[1], 1))
blue = dataOneDim[2::3].reshape((data.shape[0], data.shape[1], 1))

我们对dataOneDim中元素进行选择,红色(R)位于RGB的第一位,所以下标是0;绿色(G)位于RGB的第二位,所以下标是1;蓝色(B)位于RGB的第三位,所以下标是2。然后每隔3个元素把所有相同原色的元素挑选出来。
在这里插入图片描述

深度切分法

import numpy as np
from PIL import Image

img = Image.open('the_starry_night.jpg')
data = np.array(img)

colorDim3List = np.dsplit(data, 3)
red = colorDim3List[0]
green = colorDim3List[1]
blue = colorDim3List[2]

这儿我们使用dsplit方法,在第三个维度上进行切分。
在这里插入图片描述

3维数组堆叠

我们构造出一个和上述只有一个原色的数组相同的数组,它们结构一致,但是每个元素的值为0。

zeros = np.zeros_like(blue)

然后使用dstack方法,将不同原色的三维数组进行堆叠。

redgreen = np.dstack((red, green, zeros))
redgreenImg = Image.fromarray(redgreen)
redgreenImg.save('redgreen.png')

redblue = np.dstack((red, zeros, blue))
redblueImg = Image.fromarray(redblue)
redblueImg.save('redblue.png')

greenblue = np.dstack((zeros, green, blue))
greenblueImg = Image.fromarray(greenblue)
greenblueImg.save('greenblue.png')

得出来的图如下
请添加图片描述
请添加图片描述
请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

鸿鹄电子招投标系统:企业战略布局下的采购寻源解决方案

在数字化采购领域,企业需要一个高效、透明和规范的管理系统。通过采用Spring Cloud、Spring Boot2、Mybatis等先进技术,我们打造了全过程数字化采购管理平台。该平台具备内外协同的能力,通过待办消息、招标公告、中标公告和信息发布等功能模块…

计算机组成原理20——控制单元的功能和实现2

本系列文章是学习了网课《哈尔滨工业大学–计算机组成原理》之后,用以梳理思路而整理的听课笔记及相关思维拓展。本文涉及到的观点均为个人观点,如有不同意见,欢迎在评论区讨论。 目录 控制单元的外特性控制信号举例-多级时序系统控制方式 控…

关于jupyter突然打不开的问题

好久没有用python了,我的电脑环境是安装过anaconda和pycharm,但是有些简单的东西就希望在jupyter中测试一下,但是最近发现jupyter打不开了。 具体是: 在这里打开jupyter是可以的,但是在命令行就不行,表现为…

2023-12-29 贪心算法 分发饼干和摆动序列以及最大子数组和

贪心算法 什么是贪心算法? 就是每一阶段的最优解,从局部的最优解达到全局的最优解! 最好用的策略就是举反例,如果想不到反例,那么就试一试贪心吧。 贪心算法一般分为如下四步: 将问题分解为若干个子问…

神州战神z7ra7重装教程

UEFI模式下装的系统,开机速度明显比Legacy模式下装的系统开机速度更快 关键点: ①.U盘格式必须为FAT32 ②.不可以使用ISO镜像制作UEFI安装U盘,而是使用微软官方的工具。 ③.开机BIOS设置,最好将Secure boot设置为Disabled&#xf…

软件测试工程师经典面试题总结

一、接口测试如何设计测试用例? 首先,接口测试用例与其他测试用例是一样的,都是为了证明程序存在错误,其出发点相同;接口测试用例的对象是接口,需要验证各个系统及组件间的接口;其三是接口测试的…

SpringMVC概述、SpringMVC 的入门

1.MVC介绍 MVC是一种设计模式,将软件按照模型、视图、控制器来划分: M:Model,模型层,指工程中的JavaBean,作用是处理数据 JavaBean分为两类: 一类称为数据承载Bean:专门存储业务数据…

“第四个中国人民警察节”细语

今(2024年1月10日)天,是第四个中国人民警察节,本“人民体验官”推广人民日报官方微博文化产品《一起致敬人民警察!》。 图:来源“人民体验官”推广平台 笔者认同“平安的密码叫110”这个洽当比喻。因为人民…

threejs 光带扩散动画

目录 一、创建光带 (1) 设置光带顶点 (2) 设置光带顶点透明度属性 二、光带动画 完整代码 html文件代码 js文件代码 最后展示一下项目里的效果: 最近项目中要求做一段光带效果动画,尝试着写了一下,下面是本次分享光带扩散动画的效果预…

Kubernetes实战(十五)-Pod垂直自动伸缩VPA实战

1 介绍 VPA 全称 Vertical Pod Autoscaler,即垂直 Pod 自动扩缩容,它根据容器资源使用率自动设置 CPU 和 内存 的requests,从而允许在节点上进行适当的调度,以便为每个 Pod 提供适当的资源。 它既可以缩小过度请求资源的容器&…

STM32 使用 DS18B20 温度传感器实现环境温度监测

为了实现环境温度监测系统,我们可以利用STM32微控制器和DS18B20数字温度传感器。在本文中,我们将介绍如何通过STM32微控制器读取DS18B20传感器的温度数据,并展示一个简单的示例代码。 1. 系统概述 环境温度监测系统旨在使用DS18B20数字温度…

PolarDB DDL MDL

PolarDB DDL MDL 转载数据库内核那些事|深度解析PolarDB DDL锁的优化和演进 - 知乎 (zhihu.com) 概述 Request lock问题 MySQL 拿锁 即乐观等待的方式来拿锁MDL-X。问题:会导致DDL后续DML的阻塞。 第三方插件 pt-osc / gh-ost 采用copying method&…

微机原理常考简答题总结

一,8086和8088这两个微处理器在结构上有什么异同? (1)共同点:内部均由EU、BIU组成,结构基本相同;寄存器等功能部件均为16位;内部数据通路为16位;指令系统相同。 &#x…

搜维尔科技:【简报】元宇宙数字人赛道,2022年金奖《金魚姬》赏析!

一名网络直播主名叫琉璃,在即将展开她日常进行的每日准时直播前,肚子极为不舒服,突然很想上厕所,由于时间紧迫,导致琉璃需要在厕所里面完成直播!为了掩饰自己所在的处境,她决定运用自己设计的虚…

vivado 工程管理

管理项目 打开项目 当项目打开时,Vivado IDE会从项目已关闭。项目状态包括当前源文件顺序、已禁用和已启用 源文件、活动约束文件和目标约束文件,以及合成、模拟和实现运行。要打开项目,请使用以下方法之一: •在“入门”页面…

聚道云软件连接器助力某家居公司实现付款流程自动化

客户介绍: 某家居公司是一家集家居研发、生产、销售于一体的综合性家居企业。公司业务遍布全国多个城市,拥有庞大的供应商网络和采购需求。 添加图片注释,不超过 140 字(可选) 客户痛点: 付款申请单需要…

linux --proc文件夹学习笔记

内容在飞书文档: Docshttps://r0dhfl3ujy9.feishu.cn/docx/Xe2wd23MToSmGrxUm9kcVHrPn7g?fromfrom_copylink

mercury靶机

文章妙语 不与伪君子争名,不与真小人争利,不与执拗人争理,不与匹夫争勇,不与酸儒争才。不与蠢人施恩 一、信息收集 主机探测 端口探测 探测主机详细版本信息 8080开了http服务 目录扫描 robots.txt目录下什么也没有 二&#xff0…

lvs+keepalived+nginx双主模式双主热备实现负载均衡

目录 一、原理 二、真实服务器nginx配置 三、lvs的keepalived配置 3.1 配置文件 3.2 开启keepalived服务 四、测试 4.1 测试访问VIP 4.2 模拟lvs01宕机 主机名IPnginx0111.0.1.31nginx0111.0.1.31lvs0111.0.1.33lvs0211.0.1.34VIP111.0.1.29VIP211.0.1.30 一、原理 lvskeepal…

推理证明-条件等价式、德摩根律、双条件

对于命题逻辑部分来说,只需要掌握命题的符号化,以及如何进行推理证明即可。足矣。其他的都是一些基本的概念,扫一遍,记住即可。 对于什么是命题:陈述句、能判断、真值唯一 进行推理证明,我们需要记住以下…