Цель: Обнаружение движения и сохранить только периоды движения в файлах с именами времени начала.OpenCV - Сохранить видео на сегменты на основе состояния certion
Теперь я столкнулся с проблемой сохранения видео в файлах с началом видео.
Что я испытал:
Я проверил свою программу по частям. Кажется, что каждая часть работает хорошо, кроме сберегающей части.
Статус запуска: ошибок не было. Но в папке сохранения нет видео. Если вместо этого я использую статический путь сохранения, видео будет сохранено успешно, но видео будет отменено следующим видео. Мои коды ниже:
import cv2
import numpy as np
import time
cap = cv2.VideoCapture(0)
bgst = cv2.createBackgroundSubtractorMOG2()
fourcc=cv2.VideoWriter_fourcc(*'DIVX')
size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
n = "start_time"
while True:
ret, frame = cap.read()
dst = bgst.apply(frame)
dst = np.array(dst, np.int8)
if np.count_nonzero(dst)>3000: # use this value to adjust the "Sensitivity“
print('something is moving %s' %(time.ctime()))
path = r'E:\OpenCV\Motion_Detection\%s.avi' %n
out = cv2.VideoWriter(path, fourcc, 50, size)
out.write(frame)
key = cv2.waitKey(3)
if key == 32:
break
else:
out.release()
n = time.ctime()
print("No motion Detected %s" %n)
Чтобы избежать переопределения сохраненных видеороликов, используйте цикл 'for'. Попробуйте включить условие 'if' и' else' в цикле 'for'. –
извините, не могли бы вы прояснить? Я все еще ... не могу это исправить. – Guang