working face identify function
This commit is contained in:
parent
5bd4b4c100
commit
3ee1e00519
18 changed files with 9516 additions and 9334 deletions
Binary file not shown.
|
@ -3,23 +3,26 @@ import cv2
|
|||
import base64
|
||||
import requests
|
||||
|
||||
#Capture Image
|
||||
cam = cv2.VideoCapture(1)
|
||||
ret, img = cam.read()
|
||||
# #Capture Image
|
||||
# cam = cv2.VideoCapture(1)
|
||||
# ret, img = cam.read()
|
||||
|
||||
# #Save Image
|
||||
# cv2.imwrite("cam_test_img_pre.jpg",img)
|
||||
|
||||
# #Load Image
|
||||
# img = cv2.imread("cam_test_img_pre.jpg")
|
||||
#Load Image
|
||||
img = cv2.imread("cam_test_img_pre.jpg")
|
||||
|
||||
#Encode Image
|
||||
ret, jpg_buffer = cv2.imencode('.jpg',img)
|
||||
b64_img = base64.b64encode(jpg_buffer)
|
||||
|
||||
#Send Image to Server
|
||||
api_endpoint = "https://racist.siwatsystem.com/process_image"
|
||||
api_endpoint = "http://localhost:5000/identify_face"
|
||||
|
||||
data = {"image":b64_img.decode("utf-8")}
|
||||
req = requests.post("https://racist.siwatsystem.com/process_image",json=data)
|
||||
req = requests.post(api_endpoint,json=data)
|
||||
print(req.content)
|
||||
|
||||
#Decode Image
|
||||
|
|
28
access_control_python/face_processing.py
Normal file
28
access_control_python/face_processing.py
Normal file
|
@ -0,0 +1,28 @@
|
|||
import numpy as np
|
||||
import cv2
|
||||
import base64
|
||||
import requests
|
||||
import json
|
||||
|
||||
api_server = "http://localhost:5000"
|
||||
#api_server = "https://racist.siwatsystem.com"
|
||||
|
||||
def analyze_face(img):
|
||||
endpoint = api_server +"/process_image"
|
||||
ret, jpg_buffer = cv2.imencode('.jpg',img)
|
||||
b64_img = base64.b64encode(jpg_buffer)
|
||||
data = {"image":b64_img.decode("utf-8")}
|
||||
req = requests.post(endpoint,json=data)
|
||||
res = res.content.decode("utf-8")
|
||||
res = json.loads(res)
|
||||
return res
|
||||
|
||||
def identify_face(img, target_condidence: float):
|
||||
endpoint = api_server +"/identify_face"
|
||||
ret, jpg_buffer = cv2.imencode('.jpg',img)
|
||||
b64_img = base64.b64encode(jpg_buffer)
|
||||
data = {"image":b64_img.decode("utf-8"),"target_confidence": target_condidence}
|
||||
req = requests.post(endpoint,json=data)
|
||||
res = req.content.decode("utf-8")
|
||||
res = json.loads(res)
|
||||
return res
|
8
access_control_python/identify_test.py
Normal file
8
access_control_python/identify_test.py
Normal file
|
@ -0,0 +1,8 @@
|
|||
import numpy as np
|
||||
import cv2
|
||||
import face_processing as fp
|
||||
cam = cv2.VideoCapture(0)
|
||||
while True:
|
||||
#Capture Image
|
||||
ret, img = cam.read()
|
||||
print(fp.identify_face(img,0.4))
|
|
@ -1,21 +1,37 @@
|
|||
import cv2
|
||||
import threading
|
||||
import time
|
||||
import face_processing as fp
|
||||
from access_control import access_control
|
||||
from line_notify import LineNotify
|
||||
import time
|
||||
|
||||
stm32 = access_control("COM12")
|
||||
time.sleep(1)
|
||||
stm32.lock_door()
|
||||
#stm32.unlock_door()
|
||||
time.sleep(1)
|
||||
#door_state = False
|
||||
#while True:
|
||||
#print(stm32._in_payloads)
|
||||
#if(door_state != stm32.get_door_state()):
|
||||
# door_state = stm32.get_door_state()
|
||||
# notify = LineNotify("olK1QXriiuKgfxB6xkj7SIFfj9jsXfpl2PqmjCDuBRw")
|
||||
# notify.send(f'door is {door_state}')
|
||||
#if(stm32.get_door_state() == True):
|
||||
# stm32.lock_door()
|
||||
#else:
|
||||
# stm32.unlock_door()
|
||||
#time.sleep(0.01)
|
||||
SERIAL_PORT = "COM12"
|
||||
CAMERA_INDEX = 0
|
||||
|
||||
cam = cv2.VideoCapture(CAMERA_INDEX)
|
||||
stm32 = access_control(SERIAL_PORT)
|
||||
|
||||
global img
|
||||
global frame_ready
|
||||
frame_ready = False
|
||||
|
||||
def read_webcam():
|
||||
global img
|
||||
global frame_ready
|
||||
while True:
|
||||
ret, img = cam.read()
|
||||
frame_ready = True
|
||||
|
||||
threading.Thread(target=read_webcam).start()
|
||||
|
||||
while True:
|
||||
while not frame_ready:
|
||||
time.sleep(1)
|
||||
|
||||
#Try to identify face
|
||||
faces = fp.identify_face(img, target_condidence=0.4)
|
||||
if(len(faces)>0):
|
||||
print("Door Unlocked!, Locking in 5 seconds")
|
||||
stm32.unlock_door()
|
||||
time.sleep(5)
|
||||
stm32.lock_door()
|
||||
print("Door Locked!")
|
||||
|
|
26
access_control_python/mcu_test.py
Normal file
26
access_control_python/mcu_test.py
Normal file
|
@ -0,0 +1,26 @@
|
|||
from access_control import access_control
|
||||
from line_notify import LineNotify
|
||||
import time
|
||||
|
||||
stm32 = access_control("COM12")
|
||||
time.sleep(1)
|
||||
while True:
|
||||
cmd = input("Enter Command : ")
|
||||
if(cmd == 'lock'):
|
||||
stm32.lock_door()
|
||||
if(cmd == 'unlock'):
|
||||
stm32.unlock_door()
|
||||
#stm32.unlock_door()
|
||||
time.sleep(1)
|
||||
#door_state = False
|
||||
#while True:
|
||||
#print(stm32._in_payloads)
|
||||
#if(door_state != stm32.get_door_state()):
|
||||
# door_state = stm32.get_door_state()
|
||||
# notify = LineNotify("olK1QXriiuKgfxB6xkj7SIFfj9jsXfpl2PqmjCDuBRw")
|
||||
# notify.send(f'door is {door_state}')
|
||||
#if(stm32.get_door_state() == True):
|
||||
# stm32.lock_door()
|
||||
#else:
|
||||
# stm32.unlock_door()
|
||||
#time.sleep(0.01)
|
Loading…
Add table
Add a link
Reference in a new issue