当前位置: 首页 > 编程笔记 >

python使用PIL和matplotlib获取图片像素点并合并解析

储臻
2023-03-14
本文向大家介绍python使用PIL和matplotlib获取图片像素点并合并解析,包括了python使用PIL和matplotlib获取图片像素点并合并解析的使用技巧和注意事项,需要的朋友参考一下

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

需要将两张图片合并计算,并输出结果:

将上面两个图片合并

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实现多张图片垂直合并,包括了python使用PIL实现多张图片垂直合并的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了python实现多张图片垂直合并的具体代码,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 问题内容: 如何使用PIL或任何其他Python库获取图片边的大小? 问题答案: 根据文档。

  • 本文向大家介绍python使用PIL缩放网络图片并保存的方法,包括了python使用PIL缩放网络图片并保存的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python使用PIL缩放网络图片并保存的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Python程序设计有所帮助。

  • 本文向大家介绍JavaScript获取图片像素颜色并转换为box-shadow显示,包括了JavaScript获取图片像素颜色并转换为box-shadow显示的使用技巧和注意事项,需要的朋友参考一下 一、原理: 1.使用HTML5的FileReader API读取图片 FileReader文件读物器,用于读取客户端文件到,注意,文件读取完毕后并不会载入缓存 eg: 2.使用HTML5 canvas

  • 本文向大家介绍用python按照图像灰度值统计并筛选图片的操作(PIL,shutil,os),包括了用python按照图像灰度值统计并筛选图片的操作(PIL,shutil,os)的使用技巧和注意事项,需要的朋友参考一下 我就废话不多说了,大家还是直接看代码吧! 补充知识:python遍历灰度图像像素方法总结 啥也不说了,看代码吧! 测试结果: 以上这篇用python按照图像灰度值统计并筛选图片的操

  • 我有一个Excel(.xlsx)文件,大约有40张工作表。每个工作表具有相同的结构,但包含不同的数据。我想从每张表中提取信息并将其合并为一张,将每张表中的信息一张叠在另一张上。我需要从中提取的信息有两个: 表名,总是在单元格E3中找到 感兴趣的单元格区域,总是在行72-85和列E-V之间找到 提取的信息将粘贴在合并工作表的第2-15行中,工作表名称在一列中,所有其他信息在其旁边的列中。然后,从提取