译者注:本文以一段自打24小时耳光的视频为例子,介绍了若何应用均值哈希算法来检查反复视频帧。以下是译文。
有人在网上上传了一段视频,他打了本身24个小时的耳光。他真的┞封么做了吗?看都不消看,肯定没有!
我要测验测验应用的哈希算法称为均值哈希(aHash)。在网上能找到很多的信息,它的处理过程一般是如许的:降低图像分辨率,转换为灰度图,然后取哈希值。经由过程降低分辨率,我们可以清除噪声的影响。然而,我们冒着相邻帧可能会被标记为反复帧的风险,因为它们是类似的。经由过程调剂分辨率可以稍稍解决这个问题。
前几天,我浏览YouTube的时刻,看到了一段异常风行的视频。在视频里,一小我声称本身要持续打脸24小时。视频的长度就是整整的24小时。我跳着看完了这个视频,确切,他就是在打本身的脸。很多评论都嗣魅这个视频是捏造的,我也是这么想的,但我想肯定则个结论。

筹划

写一个法度榜样来检测视频中是否有轮回。我之前大年夜来没有效Python处理过视频,所以这对我来说有点难度。
初次测验测验
看一个视频就像是在快速地翻看图片,这也是应用python攫取视频数据的方法。我们看到的每个“图片”都是视频的一个帧。在视频播放时,它是以每秒30帧的速度进行播放。
在视频数据中,每一帧都是一个巨大年夜的数组。该数组经由过程指定命量的红、绿、蓝进行混淆来告诉我们每个地位膳绫强个像素的色彩。我们想看看视频中是否有多个帧出现了多次,有一个办法,就是计算我们看到的每一帧的次数。
我用两个字典类型的变量来进行计数。一个跟踪我已经看到的帧,另一个跟踪所有完全雷同的帧。当我逐个浏览每一帧时,起首检查以前是否看过这一帧。如不雅没有,则把这一帧添加到我已看过的帧字典中(见下面的seen_frames)。如不雅以前看过这一帧,则将它添加到另一个字典(dup_frames)的列表中,这个字典包含了其他一模一样的帧。
代码如下:
- def find_duplicates():
- # 载入视频文件
- filename = 'video.mp4'
- vid = imageio.get_reader(filename, 'ffmpeg')
- all_frames = vid.get_length()
- # 反复的帧保存在这里
- seen_frames = {}
- dup_frames = {}
- for x in range(all_frames):
- # 获取单个帧
- frame = vid.get_data(x)
- # 取帧的哈希值
- hashed = hash(frame.tostring())
- if seen_frames.get( hashed, None):
- # 如不雅之前看到过这一帧,则添加到dup_frames中具有雷同的哈希值的帧列表中
- dup_frames[hashed].append(x)
推荐阅读
TensorFlow 是一个基于 python 的机械进修框架。在 Coursera 上进修了逻辑回归的课程内容后,想把在 MATLAB 中实现了的内容用 TensorFlow 从新实现一遍,当做进修 Python 和框架的敲门砖。>>>详细阅读
本文标题:如何用Python检测伪造的视频
地址:http://www.17bianji.com/lsqh/35965.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示