face-detector: opencv based haarcascade
diff --git a/apps/face-detection/main.py b/apps/face-detection/main.py
index bffa79d..94b2d96 100644
--- a/apps/face-detection/main.py
+++ b/apps/face-detection/main.py
@@ -4,24 +4,13 @@
import urllib.request
import os
-from facenet_pytorch import MTCNN, InceptionResnetV1
-from PIL import Image
-
-
-def detect_faces(img_file):
- mtcnn = MTCNN(keep_all=True)
- ret = []
- with Image.open(img_file) as img:
- for box in mtcnn.detect(img)[0]:
- ret.append((box[0], box[1], box[2], box[3]))
- return ret
-
def fetch_file_for_image(gql_endpoint, object_storage_endpoint, id):
data = {"query": "{ getImage(id: \"" + id + "\") { objectPath } }"}
- encoded_data = urllib.parse.urlencode(data).encode('UTF-8')
- req = urllib.request.Request(gql_endpoint, encoded_data, method="POST")
- resp = urllib.request.urlopen(req)
+ # encoded_data = urllib.parse.urlencode(data).encode('UTF-8')
+ req = urllib.request.Request(gql_endpoint, method="POST")
+ req.add_header('Content-Type', 'application/json')
+ resp = urllib.request.urlopen(req, json.dumps(data).encode('UTF-8'))
object_path = json.loads(resp.read())["getImage"]["objectPath"]
local_path = urllib.request.urlretrieve(
object_storage_endpoint + "/" + object_path)[0]
@@ -39,17 +28,27 @@
segments = [format_img_segment(id, f) for f in faces]
data = {"query": "mutation {{ addImageSegment(input: [{segments}]) {{ imagesegment {{ id }} }} }}".format(
segments=", ".join(segments))}
- encoded_data = urllib.parse.urlencode(data).encode('UTF-8')
- req = urllib.request.Request(gql_endpoint, encoded_data, method="POST")
- resp = urllib.request.urlopen(req)
+ # encoded_data = urllib.parse.urlencode(data).encode('UTF-8')
+ req = urllib.request.Request(gql_endpoint, method="POST")
+ req.add_header('Content-Type', 'application/json')
+ resp = urllib.request.urlopen(req, json.dumps(data).encode('UTF-8'))
print(resp.read())
def main():
+ method = "haar"
+ if len(sys.argv) == 5 and sys.argv[4] == "mtcnn":
+ method = "mtcnn"
f = fetch_file_for_image(sys.argv[1], sys.argv[2], sys.argv[3])
- faces = detect_faces(f)
+ if method == "haar":
+ import haar
+ faces = haar.detect_faces(f)
+ upload_face_segments(sys.argv[1], sys.argv[3], faces)
+ else:
+ import mtcnn
+ faces = mtcnn.detect_faces(f)
+ upload_face_segments(sys.argv[1], sys.argv[3], faces)
os.remove(f)
- upload_face_segments(sys.argv[1], sys.argv[3], faces)
if __name__ == "__main__":