使用python的帧差

使用python的帧差,python,opencv,numpy,Python,Opencv,Numpy,我正在尝试做帧差这是我下面的代码 import numpy as np import cv2 current_frame =cv2.VideoCapture(0) previous_frame=current_frame while(current_frame.isOpened()): current_frame_gray = cv2.cvtColor(current_frame, cv2.COLOR_BGR2GRAY) previous_frame_gray= cv2.cvtCo

我正在尝试做帧差这是我下面的代码

import numpy as np
import cv2

current_frame =cv2.VideoCapture(0)


previous_frame=current_frame


while(current_frame.isOpened()):


current_frame_gray = cv2.cvtColor(current_frame, cv2.COLOR_BGR2GRAY)
previous_frame_gray= cv2.cvtColor(previous_frame, cv2.COLOR_BGR2GRAY)

frame_diff=cv2.absdiff(current_frame_gray,previous_frame_gray)


cv2.imshow('frame diff ',frame_diff)


cv2.waitKey(1)

current_frame.copyto(previous_frame)
ret, current_frame = current_frame.read()


current_frame.release()
cv2.destroyAllWindows()
我的问题是,我试图创建空帧来保存当前_帧的第一帧

previous_frame=np.zeros(current_frame.shape,dtype=current_frame.dtype)
但我认为这是不正确的,然后我试着像这样传递当前的_帧:

previous_frame=current_frame
现在我得到了这个错误:

当前帧灰度=cv2.CVT颜色(当前帧,cv2.COLOR\BGR2GRAY) TypeError:src不是numpy数组,也不是标量

那我该怎么办呢


感谢您的帮助

您已将视频捕获对象和帧混合在一起

我还对帧副本和等待键做了一些小更改

导入cv2
cap=cv2.视频捕获(0)
ret,当前帧=cap.read()
前一帧=当前帧
while(cap.isOpened()):
当前帧灰度=cv2.CVT颜色(当前帧,cv2.COLOR\BGR2GRAY)
上一帧颜色=cv2.CVT颜色(上一帧,cv2.COLOR\U BGR2GRAY)
frame\u diff=cv2.absdiff(当前帧灰,上一帧灰)
cv2.imshow(“帧差异”,帧差异)
如果cv2.waitKey(1)&0xFF==ord('q'):
打破
上一帧=当前帧。复制()
ret,当前帧=cap.read()
第1章释放()
cv2.destroyAllWindows()