finish
@ -27,12 +27,11 @@ for root, dirs, files in os.walk(image_dir):
|
|||||||
#print(label, path)
|
#print(label, path)
|
||||||
if not label in label_ids:
|
if not label in label_ids:
|
||||||
label_ids[label] = current_id
|
label_ids[label] = current_id
|
||||||
|
# print(label_ids)
|
||||||
current_id += 1
|
current_id += 1
|
||||||
|
|
||||||
id_ = label_ids[label]
|
id_ = label_ids[label]
|
||||||
# print(label_ids)
|
# print(label_ids)
|
||||||
# y_labels.append(label) #some number
|
|
||||||
# x_train.append(path) # verify this image turn into a numpy array ,gray
|
|
||||||
pil_image = Image.open(path).convert("L") # gray scale
|
pil_image = Image.open(path).convert("L") # gray scale
|
||||||
size = (550, 550)
|
size = (550, 550)
|
||||||
final_image = pil_image.resize(size, Image.ANTIALIAS)
|
final_image = pil_image.resize(size, Image.ANTIALIAS)
|
||||||
|
Before Width: | Height: | Size: 59 KiB |
BIN
src/faces/bartek/10.png
Normal file
After Width: | Height: | Size: 1.7 MiB |
BIN
src/faces/bartek/11.png
Normal file
After Width: | Height: | Size: 1.2 MiB |
BIN
src/faces/bartek/136.png
Normal file
After Width: | Height: | Size: 1.2 MiB |
BIN
src/faces/bartek/137.png
Normal file
After Width: | Height: | Size: 1.2 MiB |
BIN
src/faces/bartek/139.png
Normal file
After Width: | Height: | Size: 1.1 MiB |
BIN
src/faces/bartek/140.png
Normal file
After Width: | Height: | Size: 1.2 MiB |
BIN
src/faces/bartek/141.png
Normal file
After Width: | Height: | Size: 1.3 MiB |
BIN
src/faces/bartek/142.png
Normal file
After Width: | Height: | Size: 1.2 MiB |
BIN
src/faces/bartek/143.png
Normal file
After Width: | Height: | Size: 1.2 MiB |
BIN
src/faces/bartek/146.png
Normal file
After Width: | Height: | Size: 1.2 MiB |
Before Width: | Height: | Size: 334 KiB |
Before Width: | Height: | Size: 379 KiB |
Before Width: | Height: | Size: 320 KiB |
Before Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 28 KiB |
BIN
src/faces/bartek/7.png
Normal file
After Width: | Height: | Size: 1.2 MiB |
BIN
src/faces/bartek/8.png
Normal file
After Width: | Height: | Size: 1.2 MiB |
Before Width: | Height: | Size: 133 KiB |
Before Width: | Height: | Size: 1.2 MiB |
Before Width: | Height: | Size: 164 KiB |
Before Width: | Height: | Size: 779 KiB |
Before Width: | Height: | Size: 285 KiB |
Before Width: | Height: | Size: 212 KiB |
Before Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 307 KiB |
Before Width: | Height: | Size: 111 KiB |
Before Width: | Height: | Size: 480 KiB |
Before Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 135 KiB |
Before Width: | Height: | Size: 88 KiB |
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 203 KiB |
Before Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 76 KiB |
Before Width: | Height: | Size: 47 KiB |
Before Width: | Height: | Size: 48 KiB |
Before Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 995 KiB |
@ -1,8 +1,11 @@
|
|||||||
|
|
||||||
nagrać nagrania do pokazu footage
|
|
||||||
ogarnąć strukturę projektu, posprzątać
|
ogarnąć strukturę projektu, posprzątać
|
||||||
hover
|
hover
|
||||||
dzwiek jak ktos dobrze wpisze haslo
|
|
||||||
|
|
||||||
|
może dzięk jak ktos przyjdzie
|
||||||
|
zmien tapete
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -21,3 +24,5 @@ dodawanie osób do bazy jakieś wymyśleć
|
|||||||
szata graficzna, zmienić listen na capture
|
szata graficzna, zmienić listen na capture
|
||||||
reset listy po 20 sec zeby kolejna osoba miala szanse na rozpoznanie
|
reset listy po 20 sec zeby kolejna osoba miala szanse na rozpoznanie
|
||||||
MOŻESZ ZROBIC LATWO TO ODSWIERZANIE PO PROSTU ZALADUJ JESZCZE RAZ PLIK ;)
|
MOŻESZ ZROBIC LATWO TO ODSWIERZANIE PO PROSTU ZALADUJ JESZCZE RAZ PLIK ;)
|
||||||
|
nagrać nagrania do pokazu footage
|
||||||
|
dzwiek jak ktos dobrze wpisze haslo
|
@ -35,6 +35,9 @@ def click_event(event, x, y, flags, param):
|
|||||||
elif 640 <= y <= 703 and 218 <= x <= 422: # open gate
|
elif 640 <= y <= 703 and 218 <= x <= 422: # open gate
|
||||||
global wait_notification
|
global wait_notification
|
||||||
wait_notification = 1
|
wait_notification = 1
|
||||||
|
pygame.mixer.init()
|
||||||
|
pygame.mixer.music.load("noises/beep-07.wav")
|
||||||
|
pygame.mixer.music.play()
|
||||||
elif 640 <= y <= 703 and 452 <= x <= 694: # take a photo
|
elif 640 <= y <= 703 and 452 <= x <= 694: # take a photo
|
||||||
global screenshot, keyboard, choose
|
global screenshot, keyboard, choose
|
||||||
screenshot = 1
|
screenshot = 1
|
||||||
@ -267,9 +270,10 @@ def click_event2(event, x, y, flags, param):
|
|||||||
|
|
||||||
|
|
||||||
def display_work(length):
|
def display_work(length):
|
||||||
global displayString
|
global displayString, switch
|
||||||
if length == 1:
|
if length == 1:
|
||||||
putOnDisplay(outDoor, 220, 304, 54, 214, 'images/*.png')
|
putOnDisplay(outDoor, 220, 304, 54, 214, 'images/*.png')
|
||||||
|
switch = 1
|
||||||
elif length == 2:
|
elif length == 2:
|
||||||
putOnDisplay(outDoor, 220, 304, 54, 214, 'images/**.png')
|
putOnDisplay(outDoor, 220, 304, 54, 214, 'images/**.png')
|
||||||
elif length == 3:
|
elif length == 3:
|
||||||
@ -279,9 +283,15 @@ def display_work(length):
|
|||||||
putOnDisplay(outDoor, 220, 304, 54, 214, 'images/goodpass.png')
|
putOnDisplay(outDoor, 220, 304, 54, 214, 'images/goodpass.png')
|
||||||
global wait_notification
|
global wait_notification
|
||||||
wait_notification = 1
|
wait_notification = 1
|
||||||
|
if (switch == 1):
|
||||||
|
pygame.mixer.init()
|
||||||
|
pygame.mixer.music.load("noises/beep-07.wav")
|
||||||
|
pygame.mixer.music.play()
|
||||||
|
switch = 0
|
||||||
if wait_seconds2(3) == True:
|
if wait_seconds2(3) == True:
|
||||||
name_of_photo[2] = name_of_photo[2] + 1
|
name_of_photo[2] = name_of_photo[2] + 1
|
||||||
displayString = displayString + '#'
|
displayString = displayString + '#'
|
||||||
|
|
||||||
else:
|
else:
|
||||||
putOnDisplay(outDoor, 220, 304, 54, 214, 'images/badpass.png')
|
putOnDisplay(outDoor, 220, 304, 54, 214, 'images/badpass.png')
|
||||||
if wait_seconds2(3) == True:
|
if wait_seconds2(3) == True:
|
||||||
@ -451,7 +461,7 @@ def putStatsOnDisplay():
|
|||||||
|
|
||||||
|
|
||||||
# Declaration
|
# Declaration
|
||||||
global displayString, wait_notification, wait_add, temp1, temp2, temp3, temp4, temp5, temp6, refresh, name_of_photo, stats_status, screenshot, cam_status, show_who, is_recording, show_list, choose, keyboard, keyboardChar, keyboardString, keyboardWork
|
global displayString, wait_notification, wait_add, temp1, temp2, temp3, temp4, switch, temp5, temp6, refresh, name_of_photo, stats_status, screenshot, cam_status, show_who, is_recording, show_list, choose, keyboard, keyboardChar, keyboardString, keyboardWork
|
||||||
mydb = mysql.connector.connect(
|
mydb = mysql.connector.connect(
|
||||||
host="localhost",
|
host="localhost",
|
||||||
user="root",
|
user="root",
|
||||||
@ -472,6 +482,7 @@ temp4 = None
|
|||||||
temp5 = None
|
temp5 = None
|
||||||
temp6 = None
|
temp6 = None
|
||||||
wait_notification = 0
|
wait_notification = 0
|
||||||
|
switch = 0
|
||||||
wait_add = 0
|
wait_add = 0
|
||||||
cam_status = 0
|
cam_status = 0
|
||||||
stats_status = 0
|
stats_status = 0
|
||||||
@ -485,6 +496,7 @@ show_list = 0
|
|||||||
List = []
|
List = []
|
||||||
out = None
|
out = None
|
||||||
refresh = 1
|
refresh = 1
|
||||||
|
attempt = 15
|
||||||
|
|
||||||
font = cv2.FONT_HERSHEY_SIMPLEX
|
font = cv2.FONT_HERSHEY_SIMPLEX
|
||||||
# Wyczytywanie zmiennych z pliku
|
# Wyczytywanie zmiennych z pliku
|
||||||
@ -497,7 +509,13 @@ with open("variable.pickle", "rb") as f:
|
|||||||
|
|
||||||
|
|
||||||
# Ustawianie parametrów kamery
|
# Ustawianie parametrów kamery
|
||||||
cap = cv2.VideoCapture(0)
|
#cap = cv2.VideoCapture(0)
|
||||||
|
cap = cv2.VideoCapture('recordings/footage.mp4') # pokaz
|
||||||
|
# cap = cv2.VideoCapture('recordings/footage2.mp4') #zle
|
||||||
|
# cap = cv2.VideoCapture('recordings/footage3.mp4') #pokaz2
|
||||||
|
# cap = cv2.VideoCapture('recordings/footage4.mp4') #pokaz2
|
||||||
|
# cap = cv2.VideoCapture('recordings/footage5.mp4') #zle
|
||||||
|
#cap = cv2.VideoCapture('recordings/footage6.mp4') # pol na pol
|
||||||
cap.set(3, 1280)
|
cap.set(3, 1280)
|
||||||
cap.set(4, 720)
|
cap.set(4, 720)
|
||||||
ret, frame1 = cap.read()
|
ret, frame1 = cap.read()
|
||||||
@ -505,7 +523,7 @@ ret, frame2 = cap.read()
|
|||||||
|
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
|
# print("brak")
|
||||||
if(refresh == 1):
|
if(refresh == 1):
|
||||||
# Wczytywanie listy osób które znajdują się w bazie
|
# Wczytywanie listy osób które znajdują się w bazie
|
||||||
|
|
||||||
@ -520,7 +538,6 @@ while True:
|
|||||||
'cascades/data/haarcascade_frontalface_alt2.xml')
|
'cascades/data/haarcascade_frontalface_alt2.xml')
|
||||||
recognizer = cv2.face.LBPHFaceRecognizer_create()
|
recognizer = cv2.face.LBPHFaceRecognizer_create()
|
||||||
recognizer.read("trainner.yml")
|
recognizer.read("trainner.yml")
|
||||||
|
|
||||||
print("odswierzam")
|
print("odswierzam")
|
||||||
refresh = 0
|
refresh = 0
|
||||||
|
|
||||||
@ -531,11 +548,8 @@ while True:
|
|||||||
# Wykrywanie ruchu
|
# Wykrywanie ruchu
|
||||||
|
|
||||||
diff = cv2.absdiff(frame1, frame2)
|
diff = cv2.absdiff(frame1, frame2)
|
||||||
# cv2.imshow('diff',diff)
|
|
||||||
gray = cv2.cvtColor(diff, cv2.COLOR_BGR2GRAY)
|
gray = cv2.cvtColor(diff, cv2.COLOR_BGR2GRAY)
|
||||||
# cv2.imshow('gray',gray)
|
|
||||||
blur = cv2.GaussianBlur(gray, (5, 5), 0)
|
blur = cv2.GaussianBlur(gray, (5, 5), 0)
|
||||||
# cv2.imshow('blur',blur)
|
|
||||||
_, thresh = cv2.threshold(blur, 20, 255, cv2.THRESH_BINARY)
|
_, thresh = cv2.threshold(blur, 20, 255, cv2.THRESH_BINARY)
|
||||||
dilated = cv2.dilate(thresh, None, iterations=3)
|
dilated = cv2.dilate(thresh, None, iterations=3)
|
||||||
contours, _ = cv2.findContours(
|
contours, _ = cv2.findContours(
|
||||||
@ -543,9 +557,10 @@ while True:
|
|||||||
|
|
||||||
for contour in contours:
|
for contour in contours:
|
||||||
|
|
||||||
if cv2.contourArea(contour) < 10000:
|
if cv2.contourArea(contour) < 20000:
|
||||||
continue
|
continue
|
||||||
# aktualizacja czasu nagrywania (nagrywa do 20 sec po ostatnim wykryciu ruchu)
|
# aktualizacja czasu nagrywania (nagrywa do 20 sec po ostatnim wykryciu ruchu)
|
||||||
|
print("ruch")
|
||||||
temp4 = datetime.datetime.now()
|
temp4 = datetime.datetime.now()
|
||||||
if is_recording == 0:
|
if is_recording == 0:
|
||||||
|
|
||||||
@ -597,7 +612,7 @@ while True:
|
|||||||
faces = face_cascade.detectMultiScale(
|
faces = face_cascade.detectMultiScale(
|
||||||
gray, scaleFactor=1.5, minNeighbors=5)
|
gray, scaleFactor=1.5, minNeighbors=5)
|
||||||
|
|
||||||
if len(List) < 11:
|
if len(List) < attempt:
|
||||||
|
|
||||||
for (x, y, w, h) in faces:
|
for (x, y, w, h) in faces:
|
||||||
|
|
||||||
@ -606,23 +621,27 @@ while True:
|
|||||||
id_, conf = recognizer.predict(roi_gray)
|
id_, conf = recognizer.predict(roi_gray)
|
||||||
|
|
||||||
if conf >= 1:
|
if conf >= 1:
|
||||||
|
print("rozpoznano:" + labels[id_])
|
||||||
count = count + 1
|
count = count + 1
|
||||||
List.append(labels[id_])
|
List.append(labels[id_])
|
||||||
|
|
||||||
# Wyłączenie widoku kamery w podglądzie
|
# Wyłączenie widoku kamery w podglądzie
|
||||||
|
putOnDisplay(frame, 620, 720, 0, 1280, 'images/menu.png')
|
||||||
if cam_status == 0:
|
if cam_status == 0:
|
||||||
putOnDisplay(frame, 0, 720, 0, 1280, "images/black.png")
|
putOnDisplay(frame, 0, 720, 0, 1280, "images/black.png")
|
||||||
|
actual_time = str(
|
||||||
|
datetime.datetime.now().strftime("%H:%M:%S"))
|
||||||
|
cv2.putText(frame, actual_time, (700, 100),
|
||||||
|
font, 2, (255, 255, 255), 1, cv2.LINE_AA)
|
||||||
|
|
||||||
# Powiadomienie o rozpoznaniu osoby
|
# Powiadomienie o rozpoznaniu osoby
|
||||||
|
|
||||||
if len(List) > 0 and len(List) < 11:
|
if len(List) > 0 and len(List) < attempt:
|
||||||
print("lista: " + str(len(List)))
|
print("lista: " + str(len(List)))
|
||||||
if wait_seconds6(30) == True:
|
if wait_seconds6(30) == True:
|
||||||
List = []
|
List = []
|
||||||
|
|
||||||
if len(List) == 11:
|
if len(List) >= attempt:
|
||||||
font = cv2.FONT_HERSHEY_SIMPLEX
|
font = cv2.FONT_HERSHEY_SIMPLEX
|
||||||
putOnDisplay(frame, 120, 255, 60, 430, "images/is_coming.png")
|
putOnDisplay(frame, 120, 255, 60, 430, "images/is_coming.png")
|
||||||
cv2.putText(frame, most_frequent(List), (80, 170),
|
cv2.putText(frame, most_frequent(List), (80, 170),
|
||||||
@ -654,7 +673,7 @@ while True:
|
|||||||
cv2.putText(frame, "motion detected", (500, 500),
|
cv2.putText(frame, "motion detected", (500, 500),
|
||||||
font, 1, (255, 255, 255), 2, cv2.LINE_AA)
|
font, 1, (255, 255, 255), 2, cv2.LINE_AA)
|
||||||
|
|
||||||
if wait_seconds4(20) == True:
|
if wait_seconds4(5) == True:
|
||||||
is_recording = 0
|
is_recording = 0
|
||||||
|
|
||||||
# Wybór podczas robienia zdjecia #####################################
|
# Wybór podczas robienia zdjecia #####################################
|
||||||
@ -685,7 +704,6 @@ while True:
|
|||||||
cv2.putText(frame, name, (716, 200 + poz*40),
|
cv2.putText(frame, name, (716, 200 + poz*40),
|
||||||
font, 1, (255, 255, 255), 2, cv2.LINE_AA)
|
font, 1, (255, 255, 255), 2, cv2.LINE_AA)
|
||||||
poz = poz + 1
|
poz = poz + 1
|
||||||
print("files 0 to: " + files[0])
|
|
||||||
# Klawiatura
|
# Klawiatura
|
||||||
|
|
||||||
if keyboard == 1:
|
if keyboard == 1:
|
||||||
@ -706,7 +724,7 @@ while True:
|
|||||||
|
|
||||||
# Umieszczenie więkości interfejsu
|
# Umieszczenie więkości interfejsu
|
||||||
|
|
||||||
putOnDisplay(frame, 620, 720, 0, 1280, 'images/menu.png')
|
|
||||||
|
|
||||||
putOnDisplay(frame, 640, 640 + 63, 20, 188, 'images/camera.png')
|
putOnDisplay(frame, 640, 640 + 63, 20, 188, 'images/camera.png')
|
||||||
putOnDisplay(frame, 640, 640 + 63, 218, 422, 'images/open_gate.png')
|
putOnDisplay(frame, 640, 640 + 63, 218, 422, 'images/open_gate.png')
|
||||||
|