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利用hook技术破解https的实例代码
Mar 25 Python
python获取当前用户的主目录路径方法(推荐)
Jan 12 Python
python生成二维码的实例详解
Oct 29 Python
Java分治归并排序算法实例详解
Dec 12 Python
python2.7到3.x迁移指南
Feb 01 Python
Python判断字符串是否为字母或者数字(浮点数)的多种方法
Aug 03 Python
pandas进行时间数据的转换和计算时间差并提取年月日
Jul 06 Python
基于python调用psutil模块过程解析
Dec 20 Python
详解Python中的分支和循环结构
Feb 11 Python
python七种方法判断字符串是否包含子串
Aug 18 Python
python3.9和pycharm的安装教程并创建简单项目的步骤
Feb 03 Python
Python快速优雅的批量修改Word文档样式
May 20 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指定长度分割字符串str_split函数用法示例
2017/01/30 PHP
php代码调试利器firephp安装与使用方法分析
2018/08/21 PHP
JQuery 入门实例1
2009/06/25 Javascript
javascript addBookmark 加入收藏 多浏览器兼容
2009/08/15 Javascript
JavaScript 比较时间大小的代码
2010/04/24 Javascript
Javascript创建自定义对象 创建Object实例添加属性和方法
2012/06/04 Javascript
jquery div 居中技巧应用介绍
2012/11/24 Javascript
处理及遍历XML文档DOM元素属性及方法整理
2013/08/23 Javascript
利用函数的惰性载入提高javascript代码执行效率
2014/05/05 Javascript
jQuery实现感应鼠标动画效果自动伸长的输入框实例
2015/02/24 Javascript
jquery实现向下滑出的二级导航下滑菜单效果
2015/08/25 Javascript
Express的路由详解
2015/12/10 Javascript
jquery实现ajax加载超时提示的方法
2016/07/23 Javascript
Bootstrap table使用方法总结
2017/05/10 Javascript
vue组件 $children,$refs,$parent的使用详解
2017/07/31 Javascript
React Native中的RefreshContorl下拉刷新使用
2017/10/09 Javascript
python求众数问题实例
2014/09/26 Python
python使用正则表达式提取网页URL的方法
2015/05/26 Python
python实现数值积分的Simpson方法实例分析
2015/06/05 Python
详解Django中的form库的使用
2015/07/18 Python
Python日期时间对象转换为字符串的实例
2018/06/22 Python
对python 匹配字符串开头和结尾的方法详解
2018/10/27 Python
利用Python计算KS的实例详解
2020/03/03 Python
django 多数据库及分库实现方式
2020/04/01 Python
python 从list中随机取值的方法
2020/11/16 Python
python 6种方法实现单例模式
2020/12/15 Python
Python如何实现Paramiko的二次封装
2021/01/30 Python
Python项目实战之使用Django框架实现支付宝付款功能
2021/02/23 Python
HTML5 Video/Audio播放本地文件示例介绍
2013/11/18 HTML / CSS
为什么要做架构设计
2015/07/08 面试题
两则小学生的自我评价分享
2013/11/14 职场文书
机关干部个人对照检查材料思想汇报
2014/09/28 职场文书
申报优秀教师材料
2014/12/16 职场文书
财政局个人年终总结
2015/03/03 职场文书
2015年秋季校长开学典礼致辞
2015/07/29 职场文书
mysql 数据插入优化方法之concurrent_insert
2021/07/01 MySQL