Я следую учебнику Opencv, но не уверен в назначении cv2.absdiff (frame1, frame2), какова его цель? - PullRequest
0 голосов
/ 21 июня 2020

(Новичок) Вот код:

    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?

Результат можно увидеть в 5:35:01 этого видео

1 Ответ

0 голосов
/ 21 июня 2020

cv2.absdiff(frame1, frame2) используется для сравнения двух кадров, текущего кадра с предыдущим. Вы можете получить ссылку здесь: http://www.robindavid.fr/opencv-tutorial/chapter10-movement-detection-with-background.html

frame1 = frame2 на данном этапе не совпадают.

...