Aktywne Wpisy

Let_Me_2_Be +189
Kiedyś w pracy jeden dużo starszy kolega powiedział mi że podwozi dziecko na basen i czeka na nie 1h w samochodzie.
A ja go pytam to nie wolisz sobie tą 1h jakoś zagospodarować np na siłownię podjechać?
A on mówi że nie i dodał że ma wtedy ciszę i spokój by sobie pomyśleć.
Wtedy totalnie go nie rozumiałem. Dziś wiele lat później rozumiem.
A ja go pytam to nie wolisz sobie tą 1h jakoś zagospodarować np na siłownię podjechać?
A on mówi że nie i dodał że ma wtedy ciszę i spokój by sobie pomyśleć.
Wtedy totalnie go nie rozumiałem. Dziś wiele lat później rozumiem.


![Pościg zakończony tragicznym wypadkiem! Zginęły trzy osoby! [FOTO]](https://wykop.pl/cdn/c3397993/a4386698d0316e2296e780f379f50450a33035e963ca1e4c5d9847b3ce4f7581,q80.jpg)



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
kodimport 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