Проверьте, сколько раз фон менялся в видео - PullRequest
0 голосов
/ 24 сентября 2019

Я пытаюсь создать программу, которая выдаст мне логическое значение при изменении фона.Я хочу, чтобы область интереса изменяла цвет, если какой-либо объект входит в определенную область интереса.Я пытаюсь сделать это методом фонового вычитания, но не могу построить логику.

import numpy as np 
import cv2 

cap = cv2.VideoCapture("./video") 
fgbg = cv2.createBackgroundSubtractorMOG2() 
count = 0
number1 = []
number2 = []
number3 = []
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(3,3))
while(1): 
    ret, frame = cap.read() 

    x1, y1, x2, y2 = 55, 86, 395, 86
    sig = frame[y1 : y1+2, x1 : x2]

    fgmask = fgbg.apply(sig) 

    sig = cv2.cvtColor(sig, cv2.COLOR_BGR2GRAY)
    (thresh, sig) = cv2.threshold(sig, 128, 255, cv2.THRESH_BINARY)

#     difference = np.count_nonzero(sig) - np.count_nonzero(fgmask)
#     number1.append(np.count_nonzero(sig))
#     number2.append(np.count_nonzero(fgmask))
#     number3.append(difference)


    cv2.namedWindow("frame", 2)
    cv2.imshow('frame', ~sig) 
    cv2.namedWindow("fgmask", 2)
    cv2.imshow('fgmask', fgmask) 


    k = cv2.waitKey(30) & 0xff
    if k == 27: 
        cap.release() 
        cv2.destroyAllWindows() 
        break

cap.release() 
cv2.destroyAllWindows() 
...