🥑Python大型数据集(GPU)可视化和Pillow解释性视觉推理及材料粒子凝聚

关键词

Python | GPU | 数字图像 | 压缩 | 图像查看器 | 缩略图 | RGB | Exif 标签 | TIFF 标签 | 滤波器 | 色彩平衡 | 对比度 | 亮度 | 清晰度 | 文本 | 边框 | 裁剪 | 镜像 | 色调 | Kivy | PySimpleGUI | 视觉推理 | 大数据集 | 可视化 | 粒子 | 凝聚

🏈page指点迷津 | Brief

🎯要点

  1. P​y​t​ho​n​图像​处理Pillow​库​:🎯打开图像、保存图像、保存期间的压缩方式、读取方法、创建缩略图、创建图像查看器。🎯获取 RGB 值,从图像中获取颜色,更改像素颜色,转换为黑白。创建 4 色照片。创建棕褐色照片 ,创建图像转换器 GUI。🎯获取 Exif 标签数据、获取 GPS Exif 数据、获取 TIFF 标签数据、创建 Exif GUI。🎯滤波器:模糊、轮廓、细节、边缘增强、浮雕、查找边缘、锐化、平滑。🎯裁剪图像、旋转图像、镜像图像、调整图像大小、缩放图像、创建图像旋转器 GUI。🎯调整色彩平衡、调整图像对比度、调整图像亮度、调整图像清晰度。🎯绘制直线、圆弧、弦、椭圆、饼图切片、多边形、矩形,创建绘图 GUI。🎯绘制文本、加载 TrueType 字体、更改文本颜色、绘制多行文本、对齐文本、更改文本不透明度、了解文本锚点、创建文本绘制 GUI。🎯ImageChop 别名、添加图像、使用 ImageChops.darker()、使用 ImageChops.lighter()、查找图像中的差异、反转图像、在图像上使用柔光、在图像上使用强光、覆盖图像、创建混合 GUI。🎯应用自动对比度、对照片进行着色、填充图像、添加边框、删除边框、缩放图像、均衡直方图、调整图像大小和裁剪图像、翻转图像、镜像图像、反转图像、图像色调分离、曝光图像、使用 Exif 方向转置图像、创建 ImageOps GUI。🎯集成Kivy、PySimpleGUI、PyQt、Tkinter、wxPython。🎯创建批处理 CLI 应用程序、使用线程运行批处理应用程序、模块化您的代码、创建批处理 GUI。

  2. Pillow数字图像处理应用:🎯解释性视觉推理,🎯使用OpenGL和GPU交互式二维三维大型数据集可视化。🎯模拟材料粒子凝聚过程。

🍇Pillow数字图像处理

单色图像

 from PIL import Image
 ​
 mode = 'L'
 size = (256, 256)
 color = 0
 ​
 img = Image.new(mode, size, color)
 img.show()

在上面的代码中,我们将导入PIL库的Image模块。 我们创建一个具有 3 个参数(模式、大小和颜色)的新图像。 模式为“L”,表示图像是灰度图像,单个通道代表每个像素的强度。 (我喜欢将“L”视为亮度)。 大小是宽度为 256 像素、高度为 256 像素的元组。 颜色为 0(黑色)。 我们使用 .show() 方法显示临时图像。 当我们运行这个程序时,我们得到如下所示的输出。

接下来,我们将尝试创建带有渐变的单色图像。 我们将写下图像中的每个像素。 为此,我们使用 .putpixel() 方法。 .putpixel() 方法采用 2 个参数,即像素的 (x, y) 坐标和要在该像素处插入的值。 我们需要一个嵌套循环; 外部循环将迭代图像的宽度(x 坐标),内部循环将迭代图像的高度(y 坐标)。

 from PIL import Image
 ​
 mode = 'L'
 size = (256, 256)
 ​
 img = Image.new(mode, size)
 for x in range(256):
   for y in range(256):
     img.putpixel((x, y), x)
     
 img.show()

彩色图像

在计算机上存储彩色图像的常见模式是 RGB 加色方案。 它使用 3 种主要计算机显示颜色:红色、绿色和蓝色。 一个像素中这 3 种颜色的数量范围为 0 到 255(总共 256 种颜色)。 当这 3 种颜色组合起来时,我们有 256 * 256 * 256(16,777,216 或超过 1600 万)种不同的颜色。 让我们创建一个红色图像。

 from PIL import Image
 ​
 mode = 'RGB'
 size = (256, 256)
 color = (255, 0, 0)
 ​
 img = Image.new(mode, size, color)
 img.save("Temp.png")

与之前的代码相比,有 2 个变化是模式(现在是 RGB)和颜色(现在是 (255, 0, 0)),即红色 255、绿色 0 和蓝色 0。对于绿色图像,我们将使用 (0, 255, 0),对于蓝色图像,我们将使用 (0, 0, 255)。

在下面的代码中,我们沿 x 轴按递增顺序组合红色和蓝色,以创建洋红色的渐变。

 from PIL import Image
 ​
 img = Image.new('RGB', (256, 256))
 ​
 for x in range(256):
   for y in range(256):
     img.putpixel((x, y), (x, 0, x))
 img.show()

彩色图像换为灰度图像

 from PIL import Image
 ​
 img = Image.open("Peacock.jpg")
 img = img.convert('L')
 ​
 img.show()

我们可以使用自己的代码得到类似的灰度图像吗? 为了理解如何做到这一点,让我们看看 (0, 0) 坐标处有什么颜色。 为此,我们使用 .getpixel(pos) 方法,其中 pos 是包含像素的 x 和 y 坐标的元组:

 from PIL import Image
 ​
 img = Image.open("Peacock.jpg")
 ​
 pix = img.getpixel((0, 0))
 print(pix)

上面的结果告诉我们,在 x=0、y=0 时,红色的数量为 51,绿色的数量为 36,蓝色的数量为 31。为了获得该像素的亮度,我们可以对这些数字进行平均。

 from PIL import Image
 ​
 img = Image.open("Peacock.jpg")
 ​
 pix = img.getpixel((0, 0))
 print("Pixel value is", pix)
 lum = (pix[0] + pix[1] + pix[2]) // 3
 print("Luminosity is", lum)

现在,使用相同的逻辑(平均每个像素的亮度),让我们创建一个灰度图像。

Last updated