Python 图片处理(1) 如何增加亮度、如何添加颜色滤镜 、如何模糊图片(Pillow PIL)

article/2025/3/28 5:58:40

文章目录

  • 载入图片
    • 载入各种包
    • 载入图片
  • 压缩图片
  • 滤镜
    • 增加明亮度
      • RGB是什么
      • 增加明亮度
    • 添加一个红色滤镜
      • 紫色滤镜
    • PIL模糊滤镜

载入图片

载入各种包

# import packages
from PIL import Image
from PIL import ImageFilter
import numpy as np
import numpy as np
import pandas as pd
import re
import matplotlib.pyplot as mpl
from urllib.parse import urlparse
import urllib.robotparser# 一个check能不能fetch的方程
def canFetch(url):parsed_uri = urlparse(url)domain = '{uri.scheme}://{uri.netloc}/'.format(uri=parsed_uri)rp = urllib.robotparser.RobotFileParser()rp.set_url(domain + "/robots.txt")try:rp.read()canFetchBool = rp.can_fetch("*", url)except:canFetchBool = Nonereturn canFetchBool

载入图片

这里我选择了一张曝光度不够高的图片

查看是不是能通过打开,如果能,就用urllib打开图片

url = 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1591003793908&di=6ea0016b97fbcfe029c040421a585e33&imgtype=0&src=http%3A%2F%2Fn.sinaimg.cn%2Ffront%2F265%2Fw640h425%2F20181002%2FeAw0-hktxqah3979676.jpg'if canFetch(url):image = Image.open(urllib.request.urlopen(url))
display(image)

在这里插入图片描述

压缩图片

我们将长和宽都除以4,相当于变成了原来图片1/16的大小。

sImg = image
w,h=sImg.size
dImg=sImg.resize((int(w/4),int(h/4)),Image.ANTIALIAS)
display(dImg)

在这里插入图片描述

滤镜

增加明亮度

RGB是什么

首先我们要知道RGB是Red,Green,Blue红绿蓝。图片里所有的色块都是由这三个参数组成的。
我们可以将我们的图片转换成一个np.array:

print(np.array(dImg).shape)
np.array(dImg)

大概是这样

(106, 160, 3)
array([[[74, 78, 89],[76, 80, 92],[77, 81, 92],...,[70, 74, 85],[70, 75, 86],[72, 76, 88]],[[70, 76, 90],[71, 78, 92],[72, 78, 92],...,[68, 74, 88],[68, 74, 88],[66, 73, 86]],[[67, 77, 93],[69, 78, 95],[69, 79, 95],...,[65, 75, 91],[64, 73, 89],[61, 70, 87]],...,[[10, 14, 23],[10, 14, 23],[10, 14, 23],...,[ 3,  6, 15],[ 5,  8, 17],[ 5,  8, 17]],[[ 9, 13, 22],[ 9, 13, 22],[ 9, 13, 22],...,[ 1,  4, 13],[ 2,  5, 14],[ 2,  5, 14]],[[ 9, 13, 22],[ 9, 13, 22],[ 9, 13, 22],...,[ 2,  5, 14],[ 1,  4, 13],[ 0,  3, 12]]], dtype=uint8)

shape为(106,160,3)。
106是图片的高,160是图片的长,第三个数就是RGB的长度(都是3)
每一行的第一个数就是Red系数,越高(最高255)代表红色越多,越低(最低0)代表红色越少。
全黑是(0,0,0)
全白是(255,255,255)
正红色是(255,0,0)
绿色,蓝色同理。

增加明亮度

在明白了这个array究竟有什么意义之后,我们来增加明亮度。
越接近255,也就越偏向白色。所以我们要做的就是增加array里每一个数值

#通过不断调试这个相乘的系数,我确定了2.5是最佳的
bright_arr = np.array(dImg)*2.5
bright_arr = bright_arr.astype('uint8') 
image_bright = Image.fromarray(bright_arr)
display(image_bright)

在这里插入图片描述

添加一个红色滤镜

我们可以通过将每个色块(pixel)红色的指数全部改成200.

bright_arr[:,:,0] = 200bright_arr = bright_arr.astype('uint8') 
image_red = Image.fromarray(bright_arr)
display(image_red)

在这里插入图片描述

紫色滤镜

当然我们可以通过自己“调色”,添加除了基础色以外的滤镜。比如我知道红加蓝等于紫色。我可以加一个紫色滤镜

bright_arr[:,:,0] = 200
bright_arr[:,:,2] = 200
bright_arr = bright_arr.astype('uint8') 
image_purple = Image.fromarray(bright_arr)
display(image_purple)

在这里插入图片描述

PIL模糊滤镜

PIL有很多的filter,可以百度一下都有哪些。这里我应用了模糊滤镜,将原来清晰的图片变得模糊。

blurred_image = image_purple.filter(ImageFilter.BLUR)
display(blurred_image)

在这里插入图片描述


http://chatgpt.dhexx.cn/article/FrHtZS7u.shtml

相关文章

python图片处理(PIL)

1. 简单地读入图片、显示图片 from PIL import Image import matplotlib.pyplot as plt imgImage.open(background.jpg) plt.imshow(img) plt.show() 2. 对图像中像素点的预处理 1)获取图像尺寸 width,height 2)data是一个1D的list,长度是w…

超全Python图像处理讲解(多图预警)

文章目录 Pillow模块讲解一、Image模块1.1 、打开图片和显示图片1.2、创建一个简单的图像1.3、图像混合(1)透明度混合(2)遮罩混合 1.4、图像缩放(1)按像素缩放(2)按尺寸缩放 1.5、图…

查询oracle版本

select * from v$version; -- 查询oracle版本 select * from nls_database_parameters;

201921 oracle查看当前oracle版本及补丁版本

好久不写博客。。。 其实所有的写作,都是为了给自己备个档,给自己一次记忆,顺便,帮助了别人而已~ 所以,要多写~ 其实还有一个感悟,所有的知识来自于书本,这样才能成体系。 所有零散的技巧和知识…

查看oracle版本及补丁,Oracle 版本查看及版本号说明

select * from v$version; 结果如下: BANNER 1 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod 2 PL/SQL Release 10.2.0.1.0 - Production 3 CORE 10.2.0.1.0 Production 4 TNS for 32-bit Windows: Version 10.2.0.1.0 - Production 5 NLSRTL Version 1…

查询oracle 数据库版本

方式1:我也是在网上查询的,哈哈.自己做个总结

数学建模预测模型学习(一)——灰色预测模型

目录: 一、适用条件: 二、概念: 1、灰色系统: 2、灰色生成: 3、常见的灰生成方式: 三、GM(1,1)模型: 1、级比分析 2、GM(1,1) 四、总结 一、适用条件: &#x…

一文教你灰色预测模型到底怎么做

一、研究场景 灰色预测模型可针对数量非常少(比如仅4个),数据完整性和可靠性较低的数据序列进行有效预测,其利用微分方程来充分挖掘数据的本质,建模所需信息少,精度较高,运算简便,易…

预测模型(数学建模)

灰色系统 灰色预测是对既含有已知信息又含有不确定信息的系统进行预测,就是对在一定范围内变化的、与时间有关的灰色过程进行预测。灰色预测对原始数据进行生成处理来寻找系统变动的规律,并生成有较强规律性的数据序列,然后建立相应的微分方程…

【预测模型--常用度量指标】

一、MAE(Mean Absolute Error) 平均绝对误差MAE(MeanAbsolute Error),即误差绝对值的平均值,可以准确反映实际预测误差的大小。 MAE评估的是真实值和预测值的偏离程度,即预测误差的实际大小。 M…

matlab符号矩阵入门

由符号对象构成的矩阵为符号矩阵; 可利用sym()函数直接创建; 矩阵各元素可以为符号常量、符号变量或者符号表达式,各元素长度不要求一样; 示例如下;

matlab function 矩阵,急:Simulink MATLAB function 如何实现矩阵输出

MATLAB Function是一个模copy块,但是如果你bai输入的是一个向量,同du样也会输zhi出一个向量的。这个dao同m文件里面编程是一样的。MATLAB Function里面只能填写一个函数名称,无法编写m文件。如果你需要编写m文件的话,可以使用Embedded MATLAB…

MATLAB小知识(三)——输出矩阵到TXT

方法一:dlmwrite(验证可用) 版权声明:本文为CSDN博主「大芳同学」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/hengyaha/artic…

MATLAB基本操作与矩阵输入

文章目录 MATLAB简介一、MATLAB界面介绍二、基础知识1. 基本符号(Basic Symbol)2. 数据输出格式(Numeric Display "Format")3. 矩阵输入(Vector and Matrix)4. 实用小技巧(用于Command Window) 文…

MATLAB从入门到精通-MATLAB结构矩阵的输出

前言 在MATLAB数据处理的时候,数据通常存储在结构矩阵中,今天就给大家分享一下如何将结构矩阵中的内容完整地输出到命令行窗口中。 题目 本次讲解基于一道例题。 以下是我为大家准备的几个精品专栏,喜欢的小伙伴可自行订阅,你的支持就是我不断更新的动力哟! MATLAB-30…

matlab如何使用矩阵输出结果,请问在MATLAB中如何自定义函数,输出结果为矩阵

matlab里面都是返回矩阵的,就是一个数它也是按11的矩阵来算的,所以如果你函数内部得到一个22的矩阵OUT,直接OUTFunction(x);就行了,MATLAB函数定义2113的一般规则为5261function [a,b] fun(c,d,e)函数体end其中 a,b是输出4102变量…

matlab:输出一维矩阵中所有重复元素的索引

1. 示例 Input [1,2,1,2,3]; % 1,3索引对应都为‘1’;2,4索引对应都为‘1’ Output same_index(Input)2. 函数 function Output same_index(Input) % Input [1,2,1,2,3]; % Output {[1;3]},{[2;4]} % 注:Input的输入形式为…

MATLAB将矩阵输出为txt文本格式

将m行n列的矩阵输出为文本文件,下面以33的矩阵为例,代码如下: data [1 2 34 5 67 8 9]; % 要输出的数据m 3; % 要输出数据的行数 n 3; % 要输出数据的列数fid fopen(D:\data.txt,wt); % 要输出…

matlab 输出矩阵 逗号,matlab 矩阵输出的数值之间同时需要字符串

matlab 矩阵输出的数值之间同时需要字符串 mip版 关注:235 答案:3 悬赏:30 解决时间 2021-01-20 04:07 已解决 2021-01-19 06:57 我用如下的程序,得到了一个115行,3列的数值矩阵, clc clear p(1:115,1:3)=zeros(115,3); p(1,1)=175; p(1,2)= p(1,1)./0.998372; p(1,3)= 1…

matlab怎么导出矩阵,matlab 如何输出矩阵?

a %注意变量a后面没有“;”号,即可输出disp(a) Matlab常用生成矩阵函数: zeros(m,n) 生成一个 m 行 n 列的零矩阵,mn 时可简写为 zeros(n) ones(m,n) 生成一个 m 行 n 列的元素全为 1 的矩阵, 当mn 时可写为 ones(n) eye(m,n) 生成一个主对角…