Aktywne Wpisy
![Polejmnie](https://wykop.pl/cdn/c0834752/b6bbceb847b8ca4ae748836566de763e12fd7bf4a3b2f24823b32efd61d57751,q60.jpg)
Polejmnie +206
Kiedy intelekt feministki nie nadąża za jej ego.
#feminizm #p0lka #logikarozowychpaskow #bekazlewactwa
#feminizm #p0lka #logikarozowychpaskow #bekazlewactwa
![Polejmnie - Kiedy intelekt feministki nie nadąża za jej ego.
#feminizm #p0lka #logika...](https://wykop.pl/cdn/c3201142/d9f7687b00978a0eb40f64385cd2da9327bb33503e29132f917eede2d54c7b14,w150.jpg?author=Polejmnie&auth=4bf3a0bcff10988f0b56c53baa4152df)
źródło: 20240705_173443
PobierzZawiera treści 18+
Ta treść została oznaczona jako materiał kontrowersyjny lub dla dorosłych.
Panowie (i Panie), mam problem z nagrywaniem obrazu do pliku po detekcji ruchu. Obecnie skrypt tworzy mi kilkusekundowe pliki, wtedy gdy licznik jest powyżej 2000 i przerywa gdy spadnie poniżej tej wartości. Chciałbym, aby kontynuował nagrywanie jeszcze przez 20 sekund po ustaniu ruchu, a gdy przez te 20 sekund wykryje ponownie ruch to resetował licznik i od nowa odliczał 20 sekund. Skrypt działa poprawnie, ale niestety potrafi wygenerować w przeciągu minuty kilkadziesiąt filmików o nawet sekundowej długości. Kombinowałem coś z timerami ale biblioteka time w pythonie jest dla mnie nie do ogarnięcia;P
kod
import cv2
import numpy as np
import time
from datetime import datetime
# Video Capture
capture = cv2.VideoCapture("rtsp://admin:123456@192.168.0.86:554/H264?ch=1&subtype=2")
fourcc = cv2.VideoWriter_fourcc(*'XVID')
#capture = cv2.VideoCapture("demo.mov")
# History, Threshold, DetectShadows
fgbg = cv2.createBackgroundSubtractorMOG2(1000, 200, False)
#fgbg = cv2.createBackgroundSubtractorMOG2(300, 400, True)
# Keeps track of what frame we're on
frameCount = 0
while(1):
# Return Value and the current frame
ret, frame = capture.read()
# Check if a current frame actually exist
if not ret:
break
frameCount += 1
# Resize the frame
resizedFrame = cv2.resize(frame, (0, 0), fx=1, fy=1)
# Get the foreground mask
fgmask = fgbg.apply(resizedFrame)
# Count all the non zero pixels within the mask
count = np.countnonzero(fgmask)
print('Frame: %d, Pixel Count: %d' % (frameCount, count))
# Determine how many pixels do you want to detect to be considered "movement"
# if (frameCount > 1 and cou`nt > 5000):
if (frameCount > 1 and count >2000):
print('RUCH')
cv2.putText(resizedFrame, 'RUCH', (10, 50), cv2.FONTHERSHEYSIMPLEX, 1, (0, 0, 255), 2, cv2.LINEAA)
now = datetime.now().strftime("%Y%m%d-%H%M%S")
filename = now + '.avi'
out = cv2.VideoWriter(filename, fourcc, 20.0, (640, 480))
while count > 1000:
ret, frame = capture.read()
fgmask = fgbg.apply(resizedFrame)
out.write(frame)
count = np.count_nonzero(fgmask)
#if count <200 :
# break
cv2.imshow('Frame', resizedFrame)
cv2.imshow('Mask', fgmask)
k = cv2.waitKey(1) & 0xff
if k == 27:
break
capture.release()
cv2.destroyAllWindows()
kod
@leckimarcin: to ci windowsy zniszczy, nie rób tak
Jakiego warunku byś użył dla drugiej pętli?
Szukałem jakiegoś sygnału z biblioteki opencv, który daje prawdę jak już jest rozpoczęte nagrywanie coś jak "status record video".
https://pastebin.com/raw/qhZP8hnY
+ skrypt basha:
https://pastebin.com/raw/wpXU83vv
#opencv #python #rpi