首页 > 解决方案 > python比较来自openCV的单个视频中的2帧

问题描述

我有一个要自动化的测试用例,其中框架位于 python 中,我们需要验证进度条是否已从其早期位置增加。

假设我们正在观看应用程序上的视频,我们需要测试进度条/滑动条是否真的增加了?

测试自动化步骤:

  1. 裁剪进度条的图像[PNG]。
  2. 捕获或读取 PNG 并检查进度条状态。
  3. 15 分钟后,再次读取或捕获第二个 PNG 并检查进度条状态。
  4. 现在,比较 png 并验证进度条是否增加。

您能否在使用openCV、numpy模块时在 python 中提出建议。

标签: pythonnumpyopencvcv2

解决方案


您可以轻松地使用 opencv 和 numpy 来实现相同的目的。首先使用 opencv 从视频中读取帧,然后在视频通过的每 15 分钟,我们可以使用一些相似性算法,如 compare_ssim(在 scipy.measure 中可用)来比较当前帧和前一帧。如果图像相似,compare_ssim 给出接近 1 的数字,如果不相似,则接近 0。您可以轻松地为您的用例使用 0.7 的阈值,因为您想检查完全匹配。

您可以使用以下方法开始阅读视频:

cap = cv2.VideoCapture('path to your video')

然后使用 while 循环遍历 cap,您可以使用

_, frame = cap.read()

你也必须从 scipy 导入 ssim

from skimage.measure import compare_ssim as ssim

然后,当您有两个要比较的框架时,请使用:

simlarityIndex = ssim(imageCurrentReshape, imageLoadedReshape)

相似度指数表示您的图像有多少相似,图像相似的值越大。

希望这可以帮助。


推荐阅读