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 相关文章推荐
Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程
Nov 18 Python
python使用点操作符访问字典(dict)数据的方法
Mar 16 Python
python微信跳一跳系列之棋子定位颜色识别
Feb 26 Python
Python3删除排序数组中重复项的方法分析
Jan 31 Python
简单了解python的一些位运算技巧
Jul 13 Python
Python中的引用和拷贝实例解析
Nov 14 Python
python时间日期操作方法实例小结
Feb 06 Python
python GUI库图形界面开发之PyQt5布局控件QVBoxLayout详细使用方法与实例
Mar 06 Python
Python读入mnist二进制图像文件并显示实例
Apr 24 Python
通过Django Admin+HttpRunner1.5.6实现简易接口测试平台
Nov 11 Python
学点简单的Django之第一个Django程序的实现
Feb 24 Python
利用python调用摄像头的实例分析
Jun 07 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
山进SANGEAN ATS-909X电路分析
2021/03/02 无线电
写一个用户在线显示的程序
2006/10/09 PHP
php 一维数组的循环遍历实现代码
2017/04/10 PHP
PHP7 mongoDB扩展使用的方法分享
2019/05/02 PHP
PHP时间相关常用函数用法示例
2020/06/03 PHP
jquery ajax return没有返回值的解决方法
2011/10/20 Javascript
Jquery加载时从后台读取数据绑定到dropdownList实例
2013/06/09 Javascript
浅析jQuery对select操作小结(遍历option,操作option)
2013/07/04 Javascript
Get中文乱码IE浏览器Get中文乱码解决方案
2013/12/26 Javascript
javascript实现base64 md5 sha1 密码加密
2015/09/09 Javascript
基于jquery实现鼠标滚轮驱动的图片切换效果
2015/10/26 Javascript
jQuery插件Easyui设置datagrid的pageNumber导致两次请求问题的解决方法
2016/08/06 Javascript
Vue.js学习笔记之 helloworld
2016/08/14 Javascript
bootstrap fileinput 上传插件的基础使用
2017/02/17 Javascript
javascript原生封装一个淡入淡出效果的函数测试实例代码
2018/03/19 Javascript
原生js实现公告滚动效果
2021/01/10 Javascript
vue实现移动端轻量日期组件不依赖第三方库的方法
2019/04/28 Javascript
Node 搭建一个静态资源服务器的实现
2019/05/20 Javascript
JavaScript Image对象实现原理实例解析
2020/08/26 Javascript
Python2.x版本中maketrans()方法的使用介绍
2015/05/19 Python
详解Python中的日志模块logging
2015/06/19 Python
Python使用functools模块中的partial函数生成偏函数
2016/07/02 Python
python SQLAlchemy 中的Engine详解
2019/07/04 Python
python2.7的flask框架之引用js&amp;css等静态文件的实现方法
2019/08/22 Python
Python字典生成式、集合生成式、生成器用法实例分析
2020/01/07 Python
10款最佳Python开发工具推荐,每一款都是神器
2020/10/15 Python
python 输入字符串生成所有有效的IP地址(LeetCode 93号题)
2020/10/15 Python
使用Python+Appuim 清理微信的方法
2021/01/26 Python
解决Pyinstaller打包软件失败的一个坑
2021/03/04 Python
化学相关工作求职信
2013/10/02 职场文书
早会主持词
2014/03/17 职场文书
元宵节晚会主持人串词
2014/03/25 职场文书
小学生感恩演讲稿
2014/04/25 职场文书
爱晚亭导游词
2015/02/09 职场文书
导游带团欢迎词
2015/09/30 职场文书
研究生毕业登记表的自我鉴定范文
2019/07/15 职场文书