Я пытаюсь создать программу, которая выдаст мне логическое значение при изменении фона.Я хочу, чтобы область интереса изменяла цвет, если какой-либо объект входит в определенную область интереса.Я пытаюсь сделать это методом фонового вычитания, но не могу построить логику.
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()