python - 如何检查视频中的一组连续帧是否相同?
问题描述
我有一组来自视频的连续帧。例如像这样 ({F1, F20}, {F34, F40}, {F89, F200})。所以这里从 F1 到 F20 代表一个片段或一个帧序列。我的问题是我如何知道哪个片段具有最大的可变性,因为大多数帧在一个片段中非常相似。在这种情况下,我希望第二段作为输出。
解决方案
最明显的变体是计算像素级绝对差异。如果你有高分辨率视频,你可以通过缩小帧来牺牲性能的准确性,因此整体画面应该不会有太大变化。
对于每一帧执行:
curr_frame = # ... however you get it
curr_frame_downscaled = cv2.resize(curr_frame, (400, 400), cv2.INTER_AREA)
diff_index = np.sum(np.abs(curr_frame_downscaled - prev_frame_downscaled))
prev_frame_downscaled = curr_frame_downscaled
在此之后,您可以根据需要操作差异,例如查找每个段的差异总和或平均差异等。您还可以测试不同的颜色空间,但请记住它们可以在通道之间具有不同的值范围,因此其中一些需要标准化。
不过,我对您的细分市场一无所知。尽管只有两种帧状态,但每帧交换白屏和黑屏的视频将被视为极其不同。以这种方式尝试对np.diff()
之前的帧进行排序。
推荐阅读
- sql - 计算支付日期
- c - 将位转换为人类可读的格式
- ruby - `block_given?` 是否呈现 `&block` 参数可选?
- ruby-on-rails - 无法解决对 ROR 的依赖问题
- python - Python Pip Install Wheel 将文件放在哪里
- ios - 如何使整个 UIView 淡入白色并返回?
- c# - microsoft.office.interop.powerpoint v16 (Office 365) 与 C#
- javascript - 如何为多个移动屏幕高度(Angular 6)设置垫卡高度?
- python - 如何进行numpy数组颜色相似度转换
- aiml - 在目标中,让聊天机器人对我退出的时间有反应