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常用web框架简单性能测试结果分享(包含django、flask、bottle、tornado)
Aug 25 Python
Python中for循环和while循环的基本使用方法
Aug 21 Python
基于Python实现通过微信搜索功能查看谁把你删除了
Jan 27 Python
代码讲解Python对Windows服务进行监控
Feb 11 Python
Python实现加载及解析properties配置文件的方法
Mar 29 Python
python 爬虫 批量获取代理ip的实例代码
May 22 Python
如何安装多版本python python2和python3共存以及pip共存
Sep 18 Python
python调用自定义函数的实例操作
Jun 26 Python
pandas 选取行和列数据的方法详解
Aug 08 Python
Django ORM 常用字段与不常用字段汇总
Aug 09 Python
Python QT组件库qtwidgets的使用
Nov 02 Python
粗暴解决CUDA out of memory的问题
May 22 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 检查电子邮件函数(自写)
2014/01/16 PHP
PHP中ini_set和ini_get函数的用法小结
2014/02/18 PHP
解密ThinkPHP3.1.2版本之模块和操作映射
2014/06/19 PHP
一步一步制作jquery插件Tabs实现过程
2010/07/06 Javascript
JQuery筛选器全系列介绍
2013/08/27 Javascript
jQuery遍历Form示例代码
2013/09/03 Javascript
利用函数的惰性载入提高javascript代码执行效率
2014/05/05 Javascript
jQuery oLoader实现的加载图片和页面效果
2015/03/14 Javascript
Javascript进制转换实例分析
2015/05/14 Javascript
JS高仿抛物线加入购物车特效实现代码
2017/02/20 Javascript
nodejs搭建本地服务器并访问文件的方法
2017/03/03 NodeJs
JavaScript实现左右下拉框动态增删示例
2017/03/09 Javascript
Angularjs 1.3 中的$parse实例代码
2017/09/14 Javascript
JS实现的简单表单验证功能完整实例
2017/10/14 Javascript
JavaScript面向对象继承原理与实现方法分析
2018/08/09 Javascript
js实现滚动条自动滚动
2020/12/13 Javascript
[00:36]DOTA2上海特级锦标赛 Alliance战队宣传片
2016/03/04 DOTA
[38:39]完美世界DOTA2联赛循环赛 IO vs GXR BO2第二场 11.04
2020/11/05 DOTA
Python中音频处理库pydub的使用教程
2017/06/07 Python
利用Python如何批量更新服务器文件
2018/07/29 Python
Python中的 enum 模块源码详析
2019/01/09 Python
使用Python制作一个打字训练小工具
2019/10/01 Python
Django框架模板用法入门教程
2019/11/04 Python
英国皇家邮政海外旗舰店:Royal Mail
2018/02/21 全球购物
应届大学毕业生找工作的求职信范文
2013/11/29 职场文书
实习指导老师评语
2014/04/26 职场文书
运动会方队口号
2014/06/07 职场文书
品质标语大全
2014/06/21 职场文书
低碳生活的宣传标语
2014/06/23 职场文书
城市规划应届生推荐信
2014/09/08 职场文书
解除劳动关系协议书范文
2014/09/11 职场文书
孔庙导游词
2015/02/04 职场文书
求职自我推荐信
2015/03/24 职场文书
物业管理交接协议书
2016/03/24 职场文书
创业计划书之溜冰场
2019/10/25 职场文书
你离财务总监还有多远?速览CFO的岗位职责
2019/11/18 职场文书