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 相关文章推荐
pyqt4教程之widget使用示例分享
Mar 07 Python
Python中的字符串替换操作示例
Jun 27 Python
用Python将动态GIF图片倒放播放的方法
Nov 02 Python
机器学习的框架偏向于Python的13个原因
Dec 07 Python
对Python3 * 和 ** 运算符详解
Feb 16 Python
pyqt 实现在Widgets中显示图片和文字的方法
Jun 13 Python
python调用并链接MATLAB脚本详解
Jul 05 Python
浅析python redis的连接及相关操作
Nov 07 Python
python实现信号时域统计特征提取代码
Feb 26 Python
keras多显卡训练方式
Jun 10 Python
Python bisect模块原理及常见实例
Jun 17 Python
如何更换python默认编辑器的背景色
Aug 10 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
在WordPress中使用wp_count_posts函数来统计文章数量
2016/01/05 PHP
设定php简写功能的方法
2019/11/28 PHP
浅谈javascript 面向对象编程
2009/10/28 Javascript
jQuery使用after()方法在元素后面添加多项内容的方法
2015/03/26 Javascript
jQuery禁用键盘后退屏蔽F5刷新及禁用右键单击
2016/01/22 Javascript
js 获取经纬度的实现方法
2016/06/20 Javascript
Node.js实现文件上传
2016/07/05 Javascript
举例讲解jQuery对DOM元素的向上遍历、向下遍历和水平遍历
2016/07/07 Javascript
简单理解js的冒泡排序
2016/12/19 Javascript
js实现各浏览器全屏代码实例
2018/07/03 Javascript
浅谈Vue.use的使用
2018/08/29 Javascript
vue实现简单的星级评分组件源码
2018/11/16 Javascript
微信小程序云开发实现数据添加、查询和分页
2019/05/17 Javascript
Python将图片批量从png格式转换至WebP格式
2020/08/22 Python
Python爬虫爬取美剧网站的实现代码
2016/09/03 Python
详解python脚本自动生成需要文件实例代码
2017/02/04 Python
Django配置celery(非djcelery)执行异步任务和定时任务
2018/07/16 Python
python实现弹跳小球
2019/05/13 Python
Python内置random模块生成随机数的方法
2019/05/31 Python
Python从列表推导到zip()函数的5种技巧总结
2019/10/23 Python
Python和Sublime整合过程图示
2019/12/25 Python
爬虫代理的cookie如何生成运行
2020/09/22 Python
Python实现简单的2048小游戏
2021/03/01 Python
一款基于css3和jquery实现的动画显示弹出层按钮教程
2015/01/04 HTML / CSS
科颜氏美国官网:Kiehl’s美国
2017/01/31 全球购物
Rossignol金鸡美国官网:始于1907年法国百年雪具品牌
2019/03/06 全球购物
Bitiba意大利:在线宠物商店
2020/10/31 全球购物
应届优秀本科大学毕业生自我鉴定
2014/01/21 职场文书
秘书英文求职信范文
2014/01/31 职场文书
借款担保书范文
2014/05/13 职场文书
四风自我剖析材料
2014/09/30 职场文书
干部作风建设心得体会
2014/10/22 职场文书
教师党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
搬迁通知
2015/04/20 职场文书
上课讲话检讨书范文
2015/05/07 职场文书
2015最新婚礼主持词
2015/06/30 职场文书