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中zip()方法应用实例分析
Apr 16 Python
详解Python命令行解析工具Argparse
Apr 20 Python
Python实现的下载网页源码功能示例
Jun 13 Python
Python使用matplotlib绘图无法显示中文问题的解决方法
Mar 14 Python
python如何压缩新文件到已有ZIP文件
Mar 14 Python
python实现读取大文件并逐行写入另外一个文件
Apr 19 Python
python实现比较文件内容异同
Jun 22 Python
tensorflow saver 保存和恢复指定 tensor的实例讲解
Jul 26 Python
浅析python的Lambda表达式
Feb 27 Python
Django框架教程之中间件MiddleWare浅析
Dec 29 Python
Python reduce函数作用及实例解析
May 08 Python
Python ADF 单位根检验 如何查看结果的实现
Jun 03 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集成FCK的函数代码
2008/09/27 PHP
PHP 实现链式操作
2021/03/09 PHP
JS实现鼠标滑过显示边框的菜单效果
2016/09/21 Javascript
js创建对象几种方式的优缺点对比
2016/09/28 Javascript
js中动态创建json,动态为json添加属性、属性值的实例
2016/12/02 Javascript
详解JavaScript树结构
2017/01/09 Javascript
详解Vue 开发模式下跨域问题
2017/06/06 Javascript
20行js代码实现的贪吃蛇小游戏
2017/06/20 Javascript
jQuery选择器特殊字符与属性空格问题
2017/08/14 jQuery
vue中实现左右联动的效果
2018/06/22 Javascript
详解React 的几种条件渲染以及选择
2018/10/23 Javascript
优雅的elementUI table单元格可编辑实现方法详解
2018/12/23 Javascript
JSON基本语法及与JavaScript的异同实例分析
2019/01/04 Javascript
jQuery实现的网站banner图片无缝轮播效果完整实例
2019/01/28 jQuery
浅谈layui数据表格判断问题(加入表单元素),设置单元格样式
2019/10/26 Javascript
python显示天气预报
2014/03/02 Python
python自动安装pip
2014/04/24 Python
Python网络编程使用select实现socket全双工异步通信功能示例
2018/04/09 Python
PyQt5每天必学之像素图控件QPixmap
2018/04/19 Python
Python3实现的判断回文链表算法示例
2019/03/08 Python
python实践项目之监控当前联网状态详情
2019/05/23 Python
Python实现序列化及csv文件读取
2020/01/19 Python
Pyspark获取并处理RDD数据代码实例
2020/03/27 Python
python连接mysql有哪些方法
2020/06/24 Python
Python hashlib和hmac模块使用方法解析
2020/12/08 Python
CSS3实现跳动的动画效果
2016/09/12 HTML / CSS
css3实现一款模仿iphone样式的注册表单
2013/03/20 HTML / CSS
兰芝美国网上商城:购买LANEIGE睡眠面膜等
2017/06/30 全球购物
德国的各种媒体在线商店:Thalia.de(书籍、电子书、玩具等)
2020/10/08 全球购物
简单叙述一下MYSQL的优化
2016/05/09 面试题
建筑工程实习自我鉴定
2013/09/19 职场文书
美德少年事迹材料
2014/01/23 职场文书
开发一个封装iframe的vue组件
2021/03/29 Vue.js
如何用JS实现简单的数据监听
2021/05/06 Javascript
Java基础之线程锁相关知识总结
2021/06/30 Java/Android
Python  lambda匿名函数和三元运算符
2022/04/19 Python