(初学者)代码如下:
import cv2
import numpy as np
cap = cv2.VideoCapture('vtest.avi')
ret, frame1 = cap.read()
ret, frame2 = cap.read()
while cap.isOpened():
diff = cv2.absdiff(frame1, frame2)
gray = cv2.cvtColor(diff, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray, (5,5), 0)
_, thresh = cv2.threshold(blur, 20, 255, cv2.THRESH_BINARY)
dilate = cv2.dilate(thresh, None, iterations=3)
contour, _ = cv2.findContours(dilate, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(frame1, contour, -1, (0, 255, 0), 2)
cv2.imshow('feed', frame1)
frame1 = frame2
ret, frame2 = cap.read()
if cv2.waitKey(40) == 27:
break
cv2.destroyAllWindows()
cap.release()cv2.absdiff(frame1,frame2)有什么意义?frame1和frame2不是一样的吗?另外,frame1 = frame2的用途是什么?
可以在此video的5:35:01看到结果
发布于 2020-06-21 06:30:41
cv2.absdiff(frame1, frame2)用于比较两个帧,当前帧和前一帧。你可以从这里获得参考:http://www.robindavid.fr/opencv-tutorial/chapter10-movement-detection-with-background.html
在这个阶段,frame1 = frame2是不一样的。
https://stackoverflow.com/questions/62492235
复制相似问题