Code (python):
import cv2
import os
import time
# Putanja direktorijuma za skladištenje slika
IMAGE_DIR = '/home/dragan/Videos/Kamera/slike'
def save_image(frame):
# Generisanje imena slike na osnovu trenutnog vremena
image_name = os.path.join(IMAGE_DIR, f'{str(time.time())}.jpg')
# Cuvanje slike u direktorijumu
cv2.imwrite(image_name, frame)
# Pokretanje kamere
cap = cv2.VideoCapture(0)
# Inicijalizacija promenljive za prethodni kadar
prev_frame = None
def frame_diff(frame1, frame2):
# Pretvaranje u nijanse sive boje za smanjenje kompleksnosti
gray1 = cv2.cvtColor(frame1, cv2.COLOR_BGR2GRAY)
gray2 = cv2.cvtColor(frame2, cv2.COLOR_BGR2GRAY)
# Izracunavanje apsolutne razlike izmedju kadrova
frame_diff = cv2.absdiff(gray1, gray2)
# Izracunavanje ukupne promjene piksela na kadru
return frame_diff.sum()
# Glavna petlja za snimanje slika
while True:
ret, frame = cap.read()
if ret:
# Prikazivanje kadra
cv2.imshow('frame', frame)
# Provera da li je pritisnuta tipka 'q' za prekid petlje
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# Provera za pokret u kadru
if prev_frame is not None and frame_diff(frame, prev_frame) > 1555000:
save_image(frame)
# Cuvanje trenutnog kadra
prev_frame = frame.copy()
if cv2.getWindowProperty('frame', cv2.WND_PROP_VISIBLE) < 1:
break
# Oslobadjanje kamere i zatvaranje prozora
cap.release()
cv2.destroyAllWindows()
import cv2
import os
import time
# Putanja direktorijuma za skladištenje slika
IMAGE_DIR = '/home/dragan/Videos/Kamera/slike'
def save_image(frame):
# Generisanje imena slike na osnovu trenutnog vremena
image_name = os.path.join(IMAGE_DIR, f'{str(time.time())}.jpg')
# Cuvanje slike u direktorijumu
cv2.imwrite(image_name, frame)
# Pokretanje kamere
cap = cv2.VideoCapture(0)
# Inicijalizacija promenljive za prethodni kadar
prev_frame = None
def frame_diff(frame1, frame2):
# Pretvaranje u nijanse sive boje za smanjenje kompleksnosti
gray1 = cv2.cvtColor(frame1, cv2.COLOR_BGR2GRAY)
gray2 = cv2.cvtColor(frame2, cv2.COLOR_BGR2GRAY)
# Izracunavanje apsolutne razlike izmedju kadrova
frame_diff = cv2.absdiff(gray1, gray2)
# Izracunavanje ukupne promjene piksela na kadru
return frame_diff.sum()
# Glavna petlja za snimanje slika
while True:
ret, frame = cap.read()
if ret:
# Prikazivanje kadra
cv2.imshow('frame', frame)
# Provera da li je pritisnuta tipka 'q' za prekid petlje
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# Provera za pokret u kadru
if prev_frame is not None and frame_diff(frame, prev_frame) > 1555000:
save_image(frame)
# Cuvanje trenutnog kadra
prev_frame = frame.copy()
if cv2.getWindowProperty('frame', cv2.WND_PROP_VISIBLE) < 1:
break
# Oslobadjanje kamere i zatvaranje prozora
cap.release()
cv2.destroyAllWindows()
Uzima screnshotove kod motin detecta ali kad hocu da prekinm program i uhsim kameru sa "q" ne reaguje. Koliko sam uspeo da probunarm cv2 je za python 2.7 a sta je za puthon 3.10 koji a imam to nisam nasao. Iako sa 100x napisao chatGPT da imam samo python 3 on je skrpio ovo i ubedjuje me da je sve ok a ono ne radi. Treci dan pokusava nebulonim kombinacija ubaci ovo ili pno i uspeva mu da totalno shebe ceo kod.Posto Arch i linux nemaju generacije onda listam stranice i trazim pocetak koda kad je to davalo sliku i na motion detect pravilo slike na disku.