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正则表达式 re模块使用说明
May 19 Python
python进程管理工具supervisor使用实例
Sep 17 Python
Python实现列表转换成字典数据结构的方法
Mar 11 Python
Python过滤txt文件内重复内容的方法
Oct 21 Python
对Python3之进程池与回调函数的实例详解
Jan 22 Python
python内存监控工具memory_profiler和guppy的用法详解
Jul 29 Python
解决安装python3.7.4报错Can''t connect to HTTPS URL because the SSL module is not available
Jul 31 Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
Sep 16 Python
浅析Python数字类型和字符串类型的内置方法
Dec 22 Python
opencv python Canny边缘提取实现过程解析
Feb 03 Python
python3注册全局热键的实现
Mar 22 Python
使用keras实现Precise, Recall, F1-socre方式
Jun 15 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实现验证码功能
2006/10/09 PHP
php相当简单的分页类
2008/10/02 PHP
提高PHP性能的编码技巧以及性能优化详细解析
2013/08/24 PHP
PHP中__FILE__、dirname与basename用法实例分析
2014/12/01 PHP
SESSION存放在数据库用法实例
2015/08/08 PHP
简单的php+mysql聊天室实现方法(附源码)
2016/01/05 PHP
用YUI做了个标签浏览效果
2007/02/20 Javascript
js优化针对IE6.0起作用(详细整理)
2012/12/25 Javascript
用jquery统计子菜单的条数示例代码
2013/10/18 Javascript
php结合imgareaselect实现图片裁剪
2015/07/05 Javascript
window.setInterval()方法的定义和用法及offsetLeft与style.left的区别
2015/11/11 Javascript
搞定immutable.js详细说明
2016/05/02 Javascript
ReactJs快速入门教程(精华版)
2016/11/28 Javascript
非常实用的vue导航钩子
2017/03/20 Javascript
Vue.js 2.0 移动端拍照压缩图片预览及上传实例
2017/04/27 Javascript
react-router4 嵌套路由的使用方法
2017/07/24 Javascript
了解javascript中变量及函数的提升
2019/05/27 Javascript
vue实现简单瀑布流布局
2020/05/28 Javascript
JS绘图Flot如何实现可选显示曲线图功能
2020/10/16 Javascript
python实现文件路径和url相互转换的方法
2015/07/06 Python
python中的错误处理
2016/04/10 Python
Python数据结构之图的应用示例
2018/05/11 Python
解析Python3中的Import
2019/10/13 Python
pandas 对group进行聚合的例子
2019/12/27 Python
python写文件时覆盖原来的实例方法
2020/07/22 Python
清除canvas画布内容(点擦除+线擦除)
2020/08/12 HTML / CSS
华为c/c++笔试题
2016/01/25 面试题
医师定期考核实施方案
2014/05/07 职场文书
会计专业求职信
2014/08/10 职场文书
党员个人对照检查材料
2014/10/01 职场文书
工作作风整顿个人剖析材料
2014/10/11 职场文书
领导干部学习十八届五中全会精神心得体会
2016/01/05 职场文书
python scrapy简单模拟登录的代码分析
2021/07/21 Python
Python集合的基础操作
2021/11/01 Python
深入解析Apache Hudi内核文件标记机制
2022/03/31 Servers
详解Python flask的前后端交互
2022/03/31 Python