【问题标题】:python compare 2 frames in single video from openCVpython比较来自openCV的单个视频中的2帧
【发布时间】:2019-05-04 13:05:01
【问题描述】:
我有一个要自动化的测试用例,其中框架位于 python 中,我们需要验证进度条是否已从其早期位置增加。
假设我们正在观看应用程序上的视频,我们需要测试进度条/滑动条是否真的增加了?
测试自动化步骤:
- 裁剪进度条的图像[PNG]。
- 捕获或读取 PNG 并检查进度条状态。
- 15 分钟后,再次读取或捕获第二个 PNG 并检查进度条状态。
- 现在,比较 png 并验证进度条是否增加了。
您能否在使用 openCV、numpy 模块时在 python 中提出建议。
【问题讨论】:
标签:
python
numpy
opencv
cv2
【解决方案1】:
您可以轻松地使用 opencv 和 numpy 来实现相同的目的。
首先使用 opencv 从视频中读取帧,然后在视频通过的每 15 分钟,我们可以使用一些相似性算法,如 compare_ssim(在 scipy.measure 中可用)来比较当前帧和前一帧。
如果图像相似,compare_ssim 给出接近 1 的数字,如果不相似,则接近 0。您可以轻松地为您的用例使用 0.7 的阈值,因为您想检查完全匹配。
您可以通过以下方式开始阅读您的视频:
cap = cv2.VideoCapture('path to your video')
然后使用while循环遍历cap,就可以使用访问frame了
_, frame = cap.read()
你还必须从 scipy 导入 ssim
from skimage.measure import compare_ssim as ssim
然后当您有两个要比较的框架时:
simlarityIndex = ssim(imageCurrentReshape, imageLoadedReshape)
相似度指数表示您的图像的相似程度,值越大,图像相似。
希望这会有所帮助。