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编程之微信推送模板消息功能示例
Aug 21 Python
python3使用SMTP发送HTML格式邮件
Jun 19 Python
django DRF图片路径问题的解决方法
Sep 10 Python
python 使用pandas计算累积求和的方法
Feb 08 Python
python+selenium实现简历自动刷新的示例代码
May 20 Python
python中的decimal类型转换实例详解
Jun 26 Python
python画图——实现在图上标注上具体数值的方法
Jul 08 Python
python 执行终端/控制台命令的例子
Jul 12 Python
python异常处理try except过程解析
Feb 03 Python
使用keras和tensorflow保存为可部署的pb格式
May 25 Python
Python项目跨域问题解决方案
Jun 22 Python
python中requests库+xpath+lxml简单使用
Apr 29 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
ajax缓存问题解决途径
2006/12/06 PHP
php mysql_real_escape_string函数用法与实例教程
2013/09/30 PHP
让CodeIgniter的ellipsize()支持中文截断的方法
2014/06/12 PHP
PHP生成图片验证码、点击切换实例
2014/06/25 PHP
用Javascript实现Windows任务管理器的代码
2012/03/27 Javascript
js正则表达式的使用详解
2013/07/09 Javascript
详细介绍8款超实用JavaScript框架
2013/10/25 Javascript
input点击后placeholder中的提示消息消失
2016/01/15 Javascript
jQuery prototype冲突的2种解决方法(附demo示例下载)
2016/01/21 Javascript
JavaScript基础教程——入门必看篇
2016/05/20 Javascript
js中的关联数组与普通数组详解
2016/07/27 Javascript
自制微信公众号一键排版工具
2016/09/22 Javascript
JS获取本周周一,周末及获取任意时间的周一周末功能示例
2017/02/09 Javascript
利用CDN加速react webpack打包后的文件详解
2018/02/22 Javascript
vue升级之路之vue-router的使用教程
2018/08/14 Javascript
vue2.0 下拉框默认标题设置方法
2018/08/22 Javascript
微信小程序中上传图片并进行压缩的实现代码
2018/08/28 Javascript
基于vue循环列表时点击跳转页面的方法
2018/08/31 Javascript
MockJs结合json-server模拟后台数据
2020/08/26 Javascript
ES6 Symbol在对象中的作用实例分析
2020/06/06 Javascript
[01:12:27]EG vs Secret 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
讲解Python中的递归函数
2015/04/27 Python
实例讲解Python中函数的调用与定义
2016/03/14 Python
Python 多线程不加锁分块读取文件的方法
2018/12/11 Python
python射线法判断一个点在图形区域内外
2019/06/28 Python
Python正则表达式匹配日期与时间的方法
2019/07/07 Python
keras自定义损失函数并且模型加载的写法介绍
2020/06/15 Python
Python Selenium模块安装使用教程详解
2020/07/09 Python
Matplotlib中rcParams使用方法
2021/01/05 Python
HTML5之SVG 2D入门12—SVG DOM及DOM操作介绍
2013/01/30 HTML / CSS
擅自离岗检讨书
2014/02/11 职场文书
教师正风肃纪剖析材料
2014/10/20 职场文书
道歉的话语大全
2015/05/12 职场文书
学生会部长竞选稿
2015/11/19 职场文书
创业项目大全(适合在家创业的项目)
2019/08/15 职场文书
聊聊Python String型列表求最值的问题
2022/01/18 Python