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 相关文章推荐
python通过yield实现数组全排列的方法
Mar 18 Python
python实现FTP服务器服务的方法
Apr 11 Python
python实现创建新列表和新字典,并使元素及键值对全部变成小写
Jan 15 Python
Python IDE Pycharm中的快捷键列表用法
Aug 08 Python
Python的垃圾回收机制详解
Aug 28 Python
python Pillow图像处理方法汇总
Oct 16 Python
python使用正则表达式(Regular Expression)方法超详细
Dec 30 Python
Python内置数据类型list各方法的性能测试过程解析
Jan 07 Python
pytorch 状态字典:state_dict使用详解
Jan 17 Python
pytorch梯度剪裁方式
Feb 04 Python
Python3 shutil(高级文件操作模块)实例用法总结
Feb 19 Python
python 通过pip freeze、dowload打离线包及自动安装的过程详解(适用于保密的离线环境
Dec 14 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
php获得当前的脚本网址
2007/12/10 PHP
使用PHP的日期与时间函数技巧
2008/04/24 PHP
php header Content-Type类型小结
2011/07/03 PHP
PHP数组实例总结与说明
2011/08/23 PHP
sae使用smarty模板的方法
2013/12/17 PHP
php获取文件类型和文件信息的方法
2015/07/10 PHP
PHP实现简单爬虫的方法
2015/07/29 PHP
利用PHP如何写APP接口详解
2016/08/23 PHP
使用XHProf查找PHP性能瓶颈的实例
2017/12/13 PHP
js Dialog 实践分享
2012/10/22 Javascript
javascript中的parseInt和parseFloat区别
2013/07/12 Javascript
如何设置iframe高度自适应在跨域情况下的可用方法
2013/09/06 Javascript
location.href用法总结(最主要的)
2013/12/27 Javascript
jquery使用正则表达式验证email地址的方法
2015/01/22 Javascript
javascript比较两个日期相差天数的方法
2015/07/24 Javascript
解决jquery无法找到其他父级子集问题的方法
2016/05/10 Javascript
原生JS实现垂直手风琴效果
2017/02/19 Javascript
vue router学习之动态路由和嵌套路由详解
2017/09/21 Javascript
一些你可能不熟悉的JS知识点总结
2019/03/15 Javascript
vue组件定义,全局、局部组件,配合模板及动态组件功能示例
2019/03/19 Javascript
浅谈vue限制文本框输入数字的正确姿势
2019/09/02 Javascript
python3编写C/S网络程序实例教程
2014/08/25 Python
Python利用Nagios增加微信报警通知的功能
2016/02/18 Python
Python基础之getpass模块详细介绍
2017/08/10 Python
python解析html提取数据,并生成word文档实例解析
2018/01/22 Python
Pycharm代码无法复制,无法选中删除,无法编辑的解决方法
2018/10/22 Python
python3 打印输出字典中特定的某个key的方法示例
2019/07/06 Python
pandas.DataFrame的pivot()和unstack()实现行转列
2019/07/06 Python
python实现将json多行数据传入到mysql中使用
2019/12/31 Python
环保建议书200字
2014/05/14 职场文书
党员对照检查剖析材料
2014/10/13 职场文书
人身损害赔偿协议书格式
2014/11/01 职场文书
新员工入职欢迎词
2015/01/23 职场文书
Mysql Show Profile
2021/04/05 MySQL
MySQL 服务和数据库管理
2021/11/11 MySQL
Python测试框架pytest核心库pluggy详解
2022/08/05 Golang