Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用opencv python比较两个精确的视频_Python_Opencv_Image Processing_Video_Video Processing - Fatal编程技术网

使用opencv python比较两个精确的视频

使用opencv python比较两个精确的视频,python,opencv,image-processing,video,video-processing,Python,Opencv,Image Processing,Video,Video Processing,我的目标是确定两个完全相同的视频之间的相似性。我的方法有点幼稚,即逐帧比较,看两帧是否完全匹配。为此,我使用以下python代码: import cv2 import numpy as np capture = cv2.VideoCapture("video.wmv") capture2 = cv2.VideoCapture("video.wmv") counter = 0 while True: f, frame = capture.read() f2, frame2 = c

我的目标是确定两个完全相同的视频之间的相似性。我的方法有点幼稚,即逐帧比较,看两帧是否完全匹配。为此,我使用以下python代码:

import cv2
import numpy as np

capture = cv2.VideoCapture("video.wmv")
capture2 = cv2.VideoCapture("video.wmv")
counter = 0
while True:
    f, frame = capture.read()
    f2, frame2 = capture2.read()
    frame = cv2.GaussianBlur(frame,(15,15),0)
    frame2 = cv2.GaussianBlur(frame2, (15, 15), 0)
    try:
        res = frame - frame2
        if(np.count_nonzero(res) > 0 ):
            counter += 1
        else: continue
    except:
        print(counter)
我的视频中的总帧数约为600K。代码运行几乎20K帧,具有精确匹配,计数器保持为零(即精确帧匹配),但在20K帧之后,它开始为所有帧返回以下异常

unsupported operand type(s) for -: 'NoneType' and 'NoneType'

从异常中,我了解到它没有读取任何帧,这就是返回非类型的原因。请指导我比较视频的方法是否正确(我知道这不是有效的方法)。为什么我会出现这个错误

为什么不运行一个简单的文件比较,看看两个视频是否相等?它将更加高效,因为它只会迭代压缩数据,因此效率更高。这个线程可能会有帮助:实际上它只是一个开始。我后面的目标是分析两个视频之间的差异(或相似性)。因此,我尝试采用我的方法,看看哪些帧不相同(即res=frame-frame2>0),并确定在视频中的特定点上可能存在一些差异。你的问题没有意义。如果两个视频完全相同,你不必对它们进行比较……我在这个例子中放了相同的视频。但仅仅比较相同的视频并不是目的。我试着放相同的视频,以确保我的代码至少适用于相同的视频。你进入了一个无限的While循环。我猜你的输入视频只有20K帧,这就是为什么你得到了非类型:)你为什么不运行一个简单的文件比较,看看两个视频是否相等?它将更加高效,因为它只会迭代压缩数据,因此效率更高。这个线程可能会有帮助:实际上它只是一个开始。我后面的目标是分析两个视频之间的差异(或相似性)。因此,我尝试采用我的方法,看看哪些帧不相同(即res=frame-frame2>0),并确定在视频中的特定点上可能存在一些差异。你的问题没有意义。如果两个视频完全相同,你不必对它们进行比较……我在这个例子中放了相同的视频。但仅仅比较相同的视频并不是目的。我试着放相同的视频,以确保我的代码至少适用于相同的视频。你进入了一个无限的While循环。我猜你的输入视频只有20K帧,这就是为什么你得到非类型:)