#frame #image #testing #h264 #regression #score #visual

twenty-twenty

H.264帧和图像的视觉回归测试

10个版本 (破坏性更新)

0.8.1 2024年5月29日
0.7.0 2023年12月16日
0.6.1 2023年7月28日

#95图像

Download history 1268/week @ 2024-04-20 754/week @ 2024-04-27 504/week @ 2024-05-04 798/week @ 2024-05-11 1604/week @ 2024-05-18 888/week @ 2024-05-25 1117/week @ 2024-06-01 541/week @ 2024-06-08 1329/week @ 2024-06-15 1764/week @ 2024-06-22 954/week @ 2024-06-29 1002/week @ 2024-07-06 1122/week @ 2024-07-13 537/week @ 2024-07-20 1515/week @ 2024-07-27 1252/week @ 2024-08-03

每月4,602次下载
2 crate 中使用

MIT 许可证

210KB
173

twenty-twenty

twenty-twenty 库允许对H.264帧和图像进行视觉回归测试。当内容需要更新以匹配新结果时,它使更新内容变得容易。

每个函数都接受一个分数阈值,这是您愿意为图像比较返回的最低可能的“分数”。如果结果分数低于阈值,则测试将失败。分数必须是0到1之间的数字。如果图像完全相同,则分数将为1。

底层算法是SSIM,它是一种感知度量,用于量化由数据处理(如数据压缩)或数据传输中的损失引起的图像质量退化。更多信息可以在这里找到。

要使用此库,您的系统上需要安装ffmpeg。此库使用rust中的ffmpeg绑定将H.264帧转换为图像。

如下所示用于H.264帧

let actual = get_h264_frame();
twenty_twenty::assert_h264_frame("tests/initial-grid.png", &actual, 0.9);

如下所示用于图像

let actual = get_image();
twenty_twenty::assert_image("tests/dog1.png", &actual, 0.9);

如果输出不匹配,程序将panic!并发出分数的差异。

要接受来自get_h264_frame()get_image()的更改,请使用TWENTY_TWENTY=overwrite运行。

发布新版本

我们有一个GitHub操作,将我们的发布版本推送到这里。它通过推送新标签触发。因此,请执行以下操作

  1. Cargo.toml 中增加版本号。提交并推送到仓库。
  2. 使用新版本创建标签:git tag -sa v$(VERSION) -m "v$(VERSION)"
  3. 将标签推送到仓库:git push origin v$(VERSION)

依赖项

~6.5–9.5MB
~178K SLoC