跳转到主要内容

像素级图像比较库。

项目描述

pixelmatch-py

一个快速像素级图像比较库,最初创建用于测试中比较截图。现在还支持PIL.Image实例的Python端口 https://github.com/mapbox/pixelmatch

具有精确的 反走样像素检测感知色彩差异度量

from pixelmatch import pixelmatch

num_diff_pixels = pixelmatch(img1, img2, 800, 600, diff, threshold=0.1)

实现以下论文中的想法

安装

python -m pip install pixelmatch

示例用法

PIL.Image比较

from PIL import Image

from pixelmatch.contrib.PIL import pixelmatch

img_a = Image.open("a.png")
img_b = Image.open("b.png")
img_diff = Image.new("RGBA", img_a.size)

# note how there is no need to specify dimensions
mismatch = pixelmatch(img_a, img_b, img_diff, includeAA=True)

img_diff.save("diff.png")

原始图像数据比较

from pixelmatch import pixelmatch

width, height = 1920, 1080
img_a = [R1, G1, B1, A1, R2, B2, G2, A2, ...]
img_b = [R1, G1, B1, A1, R2, B2, G2, A2, ...]

data_diff = [0] * len(img_a)

mismatch = pixelmatch(img_a, img_b, width, height, data_diff, includeAA=True)

API

pixelmatch(img1, img2, width, height, output, threshold, includeAA, alpha, aa_color, diff_color, diff_mask, fail_fast)

  • img1, img2 — 要比较的图像的RGBA图像数据。 注意:图像维度必须相同。
  • width, height — 图像的宽度和高度。
  • output — 要写入diff的图像数据,或None如果不需要diff图像。请注意,所有三个图像都需要相同的维度。
  • threshold — 匹配阈值,范围从01。较小的值会使比较更敏感。默认为0.1
  • includeAA — 如果为true,则禁用检测和忽略反走样像素。false是默认值。
  • alpha — 差分输出中未更改像素的混合因子。范围从 0(纯白色)到 1(原始亮度)。默认值为 0.1
  • aa_color — 差分输出中抗锯齿像素的颜色,格式为 [R, G, B]。默认值为 [255, 255, 0]
  • diff_color — 差分输出中不同像素的颜色,格式为 [R, G, B]。默认值为 [255, 0, 0]
  • diff_mask — 在透明背景(掩码)上绘制差分,而不是在原始图像上。如果检测到,则不会绘制抗锯齿像素。
  • fail_fast - 如果为真,将在第一个不同像素后返回。

比较两个图像,写入输出差分,并返回不匹配像素的数量。

contrib.PIL.pixelmatch

比较两个图像,写入输出差分,并返回不匹配像素的数量。与 pixelmatch.pixelmatch 的 API 完全相同,但重要的是它接受 PIL.Image 实例作为图像参数(img1img2output),并且不需要指定宽度和大小。

示例输出

预期 实际 差分
https://github.com/whtsky/pixelmatch-py/raw/master/fixtures/4a.png https://github.com/whtsky/pixelmatch-py/raw/master/fixtures/4b.png 1diff
https://github.com/whtsky/pixelmatch-py/raw/master/fixtures/3a.png https://github.com/whtsky/pixelmatch-py/raw/master/fixtures/3b.png 1diff
https://github.com/whtsky/pixelmatch-py/raw/master/fixtures/6a.png https://github.com/whtsky/pixelmatch-py/raw/master/fixtures/6b.png 1diff
https://github.com/whtsky/pixelmatch-py/raw/master/fixtures/7a.png https://github.com/whtsky/pixelmatch-py/raw/master/fixtures/7b.png 1diff

变更日志

v0.3.0

  • feat: 添加 fail_fast 选项 #144

v0.2.4

  • type: 修复类型问题
  • chore: 测试 Python 3.10

v0.2.3

  • feat: 使包符合 PEP-561

v0.2.2

  • typing: 使用 Sequence 替代 List 作为 RGBTuple
  • build: 切换到 poetry_core #81

v0.2.1

  • feat: 添加通过 contrib.PIL.pixelmatch 比较 PIL.Image 实例的功能 #42

v0.2.0

  • BREAKING CHANGE: 移除 options 参数 #38
  • docs: 在 README 中使用绝对 URL 对图像

v0.1.1

  • fix: 修复快速路径中的错误 #18

v0.1.0

  • 首次发布

项目详情


下载文件

下载适合您平台的应用程序。如果您不确定要选择哪个,请了解更多关于 安装包 的信息。

源分布

pixelmatch-0.3.0.tar.gz (9.1 kB 查看哈希值)

上传时间

构建分布

pixelmatch-0.3.0-py3-none-any.whl (9.2 kB 查看哈希值)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面