python使用PIL和matplotlib获取图片像素点并合并解析


Posted in Python onSeptember 10, 2019

python 版本 3.x

首先安装 PIL

由于PIL仅支持到Python 2.7,加上年久失修,于是一群志愿者在PIL的基础上创建了兼容的版本,名字叫Pillow,支持最新Python 3.x,又加入了许多新特性,因此,我们可以直接安装使用Pillow。

所以 安装:

pip install pillow

获取像素点

import numpy as np
from PIL import Image
img = Image.open("./b.png").convert('RGBA')
a_img = np.asarray(img)

获取的图片像素为 一个二维数组,相当于是二维左边系, x ,y 然后里面存了一个元组 值分别为 r g b a

分别计算改变了像素值之后,就需要将数据写入到图片了,这个时候就需要 matplotlib

import matplotlib.pyplot as plt
 
plt.figure("beauty") # 开启图层,名称为 beauty
plt.imshow(a_img) # 二维数组的数据
plt.axis('off')
#plt.show()
plt.savefig("./result.png")

下面给出一个完整的 demo

需要将两张图片合并计算,并输出结果:

python使用PIL和matplotlib获取图片像素点并合并解析

python使用PIL和matplotlib获取图片像素点并合并解析

将上面两个图片合并

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
def modeSuperposition(basePixel,mixPixel,alpha):
 basePixel = int(basePixel)
 mixPixel = int(mixPixel);
 res=0
 if basePixel <= 128 :
  res = int(mixPixel) * int(basePixel) / 128;
 else:
  res = 255 - (255 - mixPixel)*(255 - basePixel) / 128;  
 a = alpha / 255; 
 if a > 1:
  a = 1
 res = (1-a)*basePixel + a*res 
 t = int(res)&-256
 if t == 0:
  return int(res)
 if res > 255:
  return 255 
 return 0 
def mergePoint(x,y):
 p1 = img1[x][y]
 p2 = img2[x][y]
 p1[1] = modeSuperposition(p1[0],p2[0],p2[3])
 p1[2] = modeSuperposition(p1[1],p2[1],p2[3])
 p1[3] = modeSuperposition(p1[2],p2[2],p2[3])  
imgA = Image.open('./b.png')
img1=np.array(imgA.convert('RGBA')) #打开图像并转化为数字矩
img2=np.array(Image.open("./light.png").convert('RGBA'))  
i = len(img1);
j = len(img1[0]);
 
for k in range(0,len(img2)):
 for n in range(0,len(img2[0])):
  if k < i and n < j:
   mergePoint(k,n)  
#img = Image.new("RGBA",imgA.size)###创建一个5*5的图片
plt.figure("beauty") # 开启图层,名称为 beauty
plt.imshow(img1) # 二维数组的数据
plt.axis('off')
#plt.show()
plt.savefig("./result.png")

结果如下:

python使用PIL和matplotlib获取图片像素点并合并解析

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
linux系统使用python获取内存使用信息脚本分享
Jan 15 Python
详解python中的json的基本使用方法
Dec 21 Python
Python爬虫_城市公交、地铁站点和线路数据采集实例
Jan 10 Python
对numpy 数组和矩阵的乘法的进一步理解
Apr 04 Python
python中字符串的操作方法大全
Jun 03 Python
python编写简易聊天室实现局域网内聊天功能
Jul 28 Python
pytorch 更改预训练模型网络结构的方法
Aug 19 Python
Python使用Paramiko控制liunx第三方库
May 20 Python
为什么python比较流行
Jun 19 Python
详解python with 上下文管理器
Sep 02 Python
python 利用opencv实现图像网络传输
Nov 12 Python
pytorch 梯度NAN异常值的解决方案
Jun 05 Python
Python字符串中添加、插入特定字符的方法
Sep 10 #Python
详解python uiautomator2 watcher的使用方法
Sep 09 #Python
一行Python代码制作动态二维码的实现
Sep 09 #Python
python制作英语翻译小工具代码实例
Sep 09 #Python
Python pandas.DataFrame 找出有空值的行
Sep 09 #Python
Python制作词云图代码实例
Sep 09 #Python
PyCharm2018 安装及破解方法实现步骤
Sep 09 #Python
You might like
UCenter中的一个可逆加密函数authcode函数代码
2010/07/20 PHP
php二维数组排序方法(array_multisort usort)
2013/12/25 PHP
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
2016/11/15 PHP
PHP 使用二进制保存用户状态的实例
2018/01/29 PHP
PHP+redis实现微博的推模型案例分析
2019/07/10 PHP
JavaScript自动设置IFrame高度的小例子
2013/06/08 Javascript
jQuery中even选择器的定义和用法
2014/12/23 Javascript
jQuery中map()方法用法实例
2015/01/06 Javascript
jQuery中prev()方法用法实例
2015/01/08 Javascript
7个让JavaScript变得更好的注意事项
2015/01/28 Javascript
分析了一下JQuery中的extend方法实现原理
2015/02/27 Javascript
Javascript中arguments用法实例分析
2015/06/13 Javascript
JS实现模拟百度搜索“2012世界末日”网页地震撕裂效果代码
2015/10/31 Javascript
基于JavaScript实现全屏透明遮罩div层锁屏效果
2016/01/26 Javascript
javascript实现用户点击数量统计
2016/12/25 Javascript
JavaScript实现自定义媒体播放器方法介绍
2017/01/03 Javascript
基于JavaScript实现的快速排序算法分析
2017/04/14 Javascript
如何解决js函数防抖、节流出现的问题
2019/06/17 Javascript
使用 js 简单的实现 bind、call 、aplly代码实例
2019/09/07 Javascript
python Crypto模块的安装与使用方法
2017/12/21 Python
解决python3 requests headers参数不能有中文的问题
2019/08/21 Python
Python函数式编程指南:对生成器全面讲解
2019/11/19 Python
使用python动态生成波形曲线的实现
2019/12/04 Python
Python中实现输入超时及如何通过变量获取变量名
2020/01/18 Python
Python多线程threading创建及使用方法解析
2020/06/17 Python
python palywright库基本使用
2021/01/21 Python
HTML5中语义化 b 和 i 标签
2008/10/17 HTML / CSS
应届毕业生专业个人求职自荐信格式
2013/11/20 职场文书
行政总监岗位职责
2013/12/05 职场文书
个人社会实践自我鉴定
2014/03/24 职场文书
学校党风廉政建设调研报告
2015/01/01 职场文书
乡镇法制宣传日活动总结
2015/05/05 职场文书
2015大学生入党个人自传
2015/06/26 职场文书
详解Python牛顿插值法
2021/05/11 Python
MySQL中InnoDB存储引擎的锁的基本使用教程
2021/05/26 MySQL
浅谈音视频 pts dts基本概念及理解
2022/08/05 数码科技