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 29 Python
Python的Bottle框架中返回静态文件和JSON对象的方法
Apr 30 Python
深入剖析Python的爬虫框架Scrapy的结构与运作流程
Jan 20 Python
Python实现对字符串的加密解密方法示例
Apr 29 Python
python实现两个文件合并功能
Apr 01 Python
Django中使用Celery的方法示例
Nov 29 Python
详解Python locals()的陷阱
Mar 26 Python
Django框架自定义session处理操作示例
May 27 Python
python中tkinter的应用:修改字体的实例讲解
Jul 17 Python
Python中输入和输出(打印)数据实例方法
Oct 13 Python
Python学习笔记之装饰器
Aug 06 Python
Python字符串格式化方式
Apr 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
PHP 文章中的远程图片采集到本地的代码
2009/07/30 PHP
php遍历CSV类实例
2015/04/14 PHP
PHP图像裁剪缩略裁切类源码及使用方法
2016/01/07 PHP
PHP与服务器文件系统的简单交互
2016/10/21 PHP
“不能执行已释放的Script代码”错误的原因及解决办法
2007/09/09 Javascript
点击文章内容处弹出页面代码
2009/10/01 Javascript
用jquery与css打造个性化的单选框和复选框
2010/10/20 Javascript
Jquery实现仿新浪微博获取文本框能输入的字数代码
2013/02/22 Javascript
js操作checkbox遇到的问题解决
2013/06/29 Javascript
深入理解jQuery中live与bind方法的区别
2013/12/18 Javascript
JavaScript中的变量定义与储存介绍
2014/12/31 Javascript
Parcel.js + Vue 2.x 极速零配置打包体验教程
2017/12/24 Javascript
快速解决bootstrap下拉菜单无法隐藏的问题
2018/08/10 Javascript
vue路由守卫及路由守卫无限循环问题详析
2019/09/05 Javascript
微信小程序实现页面左右滑动
2020/11/16 Javascript
pyqt5的QWebEngineView 使用模板的方法
2018/08/18 Python
Python生成MD5值的两种方法实例分析
2019/04/26 Python
简单了解python高阶函数map/reduce
2019/06/28 Python
python 使用plt画图,去除图片四周的白边方法
2019/07/09 Python
python smtplib发送多个email联系人的实现
2020/10/09 Python
关于python scrapy中添加cookie踩坑记录
2020/11/17 Python
一款纯css3实现的竖形二级导航的实例教程
2014/12/11 HTML / CSS
HTML5 transform三维立方体实现360无死角三维旋转效果
2014/08/22 HTML / CSS
法国创作个性化T恤衫和其他定制产品平台:Tostadora
2018/04/08 全球购物
Vita Fede官网:在意大利手工制作,在纽约市设计
2019/10/25 全球购物
印尼第一大家居、生活和家具电子商务:Ruparupa
2019/11/25 全球购物
Yahoo-PHP面试题2
2014/12/06 面试题
新东网科技Java笔试题
2012/07/13 面试题
枚举和一组预处理的#define有什么不同
2016/09/21 面试题
夜不归宿检讨书
2014/02/25 职场文书
劳模事迹材料范文
2014/12/24 职场文书
教代会闭幕词
2015/01/28 职场文书
业务员年终工作总结2015
2015/05/28 职场文书
详解vue中v-for的key唯一性
2021/05/15 Vue.js
详细了解MVC+proxy
2021/07/09 Java/Android
python绘制云雨图raincloud plot
2022/08/05 Python