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 相关文章推荐
在Django中使用Sitemap的方法讲解
Jul 22 Python
python开发环境PyScripter中文乱码问题解决方案
Sep 11 Python
python 接口_从协议到抽象基类详解
Aug 24 Python
python+pillow绘制矩阵盖尔圆简单实例
Jan 16 Python
flask中使用蓝图将路由分开写在不同文件实例解析
Jan 19 Python
对python xlrd读取datetime类型数据的方法详解
Dec 26 Python
python读出当前时间精度到秒的代码
Jul 05 Python
详解python tkinter模块安装过程
Jan 06 Python
使用 prometheus python 库编写自定义指标的方法(完整代码)
Jun 29 Python
Python异常处理机制结构实例解析
Jul 23 Python
DRF框架API版本管理实现方法解析
Aug 21 Python
详解Python中的路径问题
Sep 02 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
全国FM电台频率大全 - 2 天津市
2020/03/11 无线电
用php+mysql一个名片库程序
2006/10/09 PHP
WindowsXP中快速配置Apache+PHP5+Mysql
2008/06/05 PHP
header中Content-Disposition的作用与使用方法
2012/06/13 PHP
PHP中CURL的CURLOPT_POSTFIELDS参数使用细节
2014/03/17 PHP
php图片处理函数获取类型及扩展名实例
2014/11/19 PHP
PHP判断来访是搜索引擎蜘蛛还是普通用户的代码小结
2015/09/14 PHP
浅谈php+phpStorm+xdebug配置方法
2015/09/17 PHP
PHP实现截取中文字符串不出现?号的解决方法
2016/12/29 PHP
PHP实现实时生成并下载超大数据量的EXCEL文件详解
2017/10/23 PHP
轻轻松松学JS调试(不下载任何工具)
2010/04/14 Javascript
Js日期选择器并自动加入到输入框中示例代码
2013/08/02 Javascript
手机移动端实现 jquery和HTML5 Canvas的幸运大奖盘特效
2016/12/06 Javascript
JS实现PC手机端和嵌入式滑动拼图验证码三种效果
2017/02/15 Javascript
Bootstrap modal 多弹窗之叠加显示不出弹窗问题的解决方案
2017/02/23 Javascript
js实现微信/QQ直接跳转到支付宝APP打开口令领红包功能
2018/01/09 Javascript
mpvue 单文件页面配置详解
2018/12/02 Javascript
vue强制刷新组件的方法示例
2019/02/28 Javascript
JavaScript中的Proxy对象
2020/11/27 Javascript
Python contextlib模块使用示例
2015/02/18 Python
python实用代码片段收集贴
2015/06/03 Python
python实现手机销售管理系统
2019/03/19 Python
python中append实例用法总结
2019/07/30 Python
在Python中用GDAL实现矢量对栅格的切割实例
2020/03/11 Python
Python如何把十进制数转换成ip地址
2020/05/25 Python
HTML5 localStorage使用总结
2017/02/22 HTML / CSS
美国高品质个性化珠宝销售网站:Jewlr
2018/05/03 全球购物
Myprotein俄罗斯官网:欧洲第一运动营养品牌
2019/05/05 全球购物
莫斯科购买书籍网站:Book24
2020/01/12 全球购物
农行实习自我鉴定
2013/09/22 职场文书
会计求职信范文
2014/05/24 职场文书
传承焦裕禄精神思想汇报2014
2014/09/10 职场文书
2015年宣传工作总结
2015/04/08 职场文书
在校生证明
2015/06/17 职场文书
党员学习中国梦心得体会
2016/01/05 职场文书
利用Python判断整数是否是回文数的3种方法总结
2021/07/07 Python