python - python比较来自openCV的单个视频中的2帧
问题描述
我有一个要自动化的测试用例,其中框架位于 python 中,我们需要验证进度条是否已从其早期位置增加。
假设我们正在观看应用程序上的视频,我们需要测试进度条/滑动条是否真的增加了?
测试自动化步骤:
- 裁剪进度条的图像[PNG]。
- 捕获或读取 PNG 并检查进度条状态。
- 15 分钟后,再次读取或捕获第二个 PNG 并检查进度条状态。
- 现在,比较 png 并验证进度条是否增加。
您能否在使用openCV、numpy模块时在 python 中提出建议。
解决方案
您可以轻松地使用 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)
相似度指数表示您的图像有多少相似,图像相似的值越大。
希望这可以帮助。
推荐阅读
- linux - 从两个不同的接口合并 tcpdump
- c++ - 使用 -std=c++17 编译时在 GCC 中恢复 std::auto_ptr
- c# - 如何创建动态数据库连接字符串C#
- r - 我在集群上的 R 中运行 1000 个并行模拟。之后管理和重新组合结果的最佳方法是什么?
- c++ - 具有专用成员函数的默认模板参数
- reactjs - 将 redux 存储与 Tampermonkey 一起使用
- python - Python和matlab给出不同的答案
- php - 如何只为表中的唯一行推出 JSON?
- multithreading - 这种死锁在 Scala Future 中是如何发生的?
- for-loop - 如何在 ecal echo 中换行?在 bash 脚本中