Guest User

Untitled

a guest
Dec 11th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.45 KB | None | 0 0
  1. import cv2
  2. import numpy as np
  3. #import time
  4. from keras.models import load_model
  5. import tensorflow as tf
  6. import keras.backend as K
  7. #global graph, model
  8. #graph = tf.get_default_graph()
  9. config = tf.ConfigProto()
  10. config.gpu_options.allow_growth =True
  11. sess = tf.Session(config=config)
  12. cascade = cv2.CascadeClassifier('D:\Code\haarcascade_frontalface_default.xml')
  13. modelPath = 'D:\Code\model 32 7 sigmoid 0.3 0.005.hdf5'
  14. model = load_model(modelPath)
  15. model._make_predict_function()
  16. class vid():
  17. def __init__(self):
  18. self.cam = cv2.VideoCapture(-1)
  19. self.cam.set(cv2.CAP_PROP_FRAME_WIDTH,1280)
  20. self.cam.set(cv2.CAP_PROP_FRAME_HEIGHT,720)
  21. self.evalPredict = [0,0,0]
  22. def __del__(self):
  23. self.cam.release()
  24.  
  25. def getFrame(self):
  26. work, img = self.cam.read()
  27. img = cv2.flip(img,1)
  28. self.gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
  29. self.face = cascade.detectMultiScale(self.gray,scaleFactor=1.5,minNeighbors=5)
  30. for (x,y,w,h) in self.face:
  31. self.roi = self.gray[y:y+h,x:x+w]
  32. self.color = (255,255,0)
  33. self.stroke = 3
  34. self.endX = x+w
  35. self.endY = y+h
  36. img = cv2.rectangle(img,(x,y),(self.endX,self.endY),self.color,self.stroke)
  37. self.eval = self.evaluate(self.roi)
  38. self.evalPredict = self.eval
  39. #print(self.evalPredict)
  40. ret,jpeg = cv2.imencode('.jpeg',img)
  41. return jpeg.tobytes()
  42.  
  43. def evaluate(self,img):
  44. img = cv2.resize(img,(128,128))
  45. img = np.array(img)
  46. self.predict = self.prediction(img)
  47. self.predict = self.predict[0]
  48. return self.predict
  49.  
  50. def prediction(self,roi):
  51. self.predict = model.predict(roi.reshape(1,128,128,1))
  52. #K.clear_session()
  53. return self.predict
  54.  
  55. from flask import Flask, render_template, Response
  56. from cam import vid
  57. from flask_socketio import SocketIO, send,emit
  58. import eventlet
  59. eventlet.monkey_patch()
  60. app = Flask(__name__)
  61.  
  62. app.config['SECRET_KEY'] ='secret'
  63. socketio = SocketIO(app,message = 'http://127.0.0.1:500',async_mode='threading')
  64. @app.route('/')
  65. def index():
  66. return render_template('index.html')
  67.  
  68. def gen(cam):
  69. while True:
  70. frame = cam.getFrame()
  71. anger = cam.evalPredict[0]
  72. happy = cam.evalPredict[1]
  73. sad = cam.evalPredict[2]
  74. yield(b'--framern'
  75. b'Content-Type: image/jpegrnrn'+frame+b'rnrn')
  76. handleMessage(str(anger))
  77.  
  78. @app.route('/video')
  79.  
  80. def video():
  81. return Response(gen(vid()),
  82. mimetype='multipart/x-mixed-replace; boundary=frame')
  83. @socketio.on('message')
  84. def handleMessage(anger):
  85. with app.test_request_context('/'):
  86. emit('Anger Response',anger,namespace='/anger',broadcast=True)
  87. if __name__ == '__main__':
  88. socketio.run(app,debug = True)
  89.  
  90. <!DOCTYPE html>
  91. <html lang="en" dir="ltr">
  92. <head>
  93. <meta charset="utf-8">
  94. <title>MICREX</title>
  95. <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.dev.js" charset="utf-8"></script>
  96. <script
  97. src="https://code.jquery.com/jquery-3.3.1.js"
  98. integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60="
  99. crossorigin="anonymous"></script>
  100. </head>
  101. <body>
  102. <script type="text/javascript">
  103. $(document).ready(function(){
  104. var socket = io.connect('http://'+document.domain+':'+location.port+'/anger');
  105.  
  106. //socket.on('message',function(a){
  107. socket.on('Anger Response',function(a){
  108. $("#h2").html(a);
  109. console.log(a)
  110. });
  111.  
  112. //});
  113. $('#h2').html('Working');
  114. });
  115. </script>
  116. <h1>Video Stream</h1>
  117. <img src="{{ url_for('video') }}" alt="">
  118. <h2 id="h2">ABC</h2>
Add Comment
Please, Sign In to add comment