Aktywne Wpisy
meltdown +50
Używa ktoś z was jeszcze tzw. dumbphone, czyli klasycznych telefonów z klawiaturą?
#telefony #minimalizm #nostalgia
#telefony #minimalizm #nostalgia
Kamienie +18
Szukam czegoś dobrego do czytania. Czegoś naprawdę dobrego. Od kilku godzin przebijam się jednak przez strony wydawnictw, księgarni internetowych i forów w poszukiwaniu czegoś godnego uwagi i nie mogę znaleźć niczego ciekawego.
Może ktoś z Was do polecenia dobrą powieść, która skradła mu kilka wieczorów i pozostawiła po sobie niedosyt?
Czego szukam?
- czegoś, co nie jest romansem, horrorem, kryminałem ani Orzeszkową
- zależy mi na ciekawej historii z krwistymi, interesującymi bohaterami
Może ktoś z Was do polecenia dobrą powieść, która skradła mu kilka wieczorów i pozostawiła po sobie niedosyt?
Czego szukam?
- czegoś, co nie jest romansem, horrorem, kryminałem ani Orzeszkową
- zależy mi na ciekawej historii z krwistymi, interesującymi bohaterami
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