client.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import cv2
  2. import requests
  3. import pickle
  4. import json
  5. import sys
  6. import time
  7. HOST = 'http://192.168.100.92:10016'
  8. url = HOST + '/query'
  9. cam_port = 0
  10. cam = cv2.VideoCapture(cam_port)
  11. if not cam.isOpened():
  12. print("Unable to read camera feed")
  13. sys.exit()
  14. imgid = 0
  15. while True:
  16. print('====Select mode====\n1. Query mode(Defalut) \n2. Enroll mode\n3. Exit')
  17. print('> ', end='')
  18. mode = input()
  19. mode = 1 if not mode.isnumeric() else int(mode)
  20. if mode == 3:
  21. break
  22. elif mode == 2:
  23. print("what's your name?")
  24. iname = input()
  25. print('Picture key is "e"')
  26. while True:
  27. result, image = cam.read()
  28. cv2.imshow("GFG", image)
  29. if cv2.waitKey(5) & 0xFF == ord('e'):
  30. img = image.copy()
  31. res = requests.post(HOST + '/enroll', pickle.dumps({'img': image, 'name': iname}))
  32. print('enroll', res.text)
  33. if cv2.waitKey(5) & 0xFF == ord('q'):
  34. cv2.destroyWindow("GFG")
  35. requests.post(HOST + '/cal', pickle.dumps({'name': iname}))
  36. break
  37. else:
  38. print('※ Query mode start, Exit key is "q" ※')
  39. while True:
  40. result, image = cam.read()
  41. img = image.copy()
  42. res = requests.post(url, pickle.dumps({'img': img, 'name': ''}))
  43. imgid += 1
  44. if res.text == 'fail':
  45. cv2.putText(image, "fail", (10, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2)
  46. cv2.imshow("GFG", img)
  47. else:
  48. info = json.loads(res.text)
  49. x1 = info['x1']
  50. y1 = info['y1']
  51. x2 = info['x2']
  52. y2 = info['y2']
  53. score = round(info['score'] * 100, 1)
  54. confi = info['file'] + ' ' + str(score) + '%' if info['file'] != 'Unknown' else info['file']
  55. if result:
  56. cv2.putText(image, confi, (int(x2)+20, int(y2)), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
  57. cv2.rectangle(image, (int(x1), int(y1)), (int(x2), int(y2)), (0, 0, 255), 3)
  58. cv2.imshow("GFG", image)
  59. else:
  60. break
  61. if cv2.waitKey(5) & 0xFF == ord('q'):
  62. break
  63. cv2.destroyWindow("GFG")
  64. cam.release()