Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Need help in showing open cv output frame in browser

Hey I want to show the open cv frame output in window of browser. I am making flask app of human Activity Recognition.

libraries

import the necessary packages

import time

import onnx import numpy as np import argparse import imutils import sys import cv2 from imutils.video import VideoStream from flask import Flask, render_template, request

app = Flask(__name__)

app.secret_key = "my precious" c = open('action_recognition_kinetics.txt') @app.route('/') def home():

return render_template('harPro.html')  # render a template

@app.route('/recognize', methods= ['POST','GET']) def Recognize(): if request.method == 'POST': i = request.form['myFile'] CLASSES = c.read().strip().split("\n") SAMPLE_DURATION = 16 SAMPLE_SIZE = 112

load the human activity recognition model

    print("[INFO] loading human activity recognition model...")
    net = cv2.dnn.readNet('resnet-34_kinetics.onnx')

    # grab a pointer to the input video stream
    print("[INFO] accessing video stream...")
    vs = cv2.VideoCapture(i if i else 0)

    # loop until we explicitly break from it
    while True:
        # initialize the batch of frames that will be passed through the
        # model
        frames = []

        # loop over the number of required sample frames
        for i in range(0, SAMPLE_DURATION):
            # read a frame from the video stream
            (grabbed, frame) = vs.read()

            # if the frame was not grabbed then we've reached the end of
            # the video stream so exit the script
            if not grabbed:
                print("[INFO] no frame read from stream - exiting")
                sys.exit(0)

            # otherwise, the frame was read so resize it and add it to
            # our frames list
            frame = imutils.resize(frame, width=400)
            frames.append(frame)

        # now that our frames array is filled we can construct our blob
        blob = cv2.dnn.blobFromImages(frames, 1.0,
                                      (SAMPLE_SIZE, SAMPLE_SIZE), (114.7748, 107.7354, 99.4750),
                                      swapRB=True, crop=True)
        blob = np.transpose(blob, (1, 0, 2, 3))
        blob = np.expand_dims(blob, axis=0)

        # pass the blob through the network to obtain our human activity
        # recognition predictions
        net.setInput(blob)
        outputs = net.forward()
        label = CLASSES[np.argmax(outputs)]

        # loop over our frames
        for frame in frames:
            # draw the predicted activity on the frame
            cv2.rectangle(frame, (0, 0), (300, 40), (0, 0, 0), -1)
            cv2.putText(frame, label, (10, 25), cv2.FONT_HERSHEY_SIMPLEX,
                        0.8, (255, 255, 255), 2)

            # # display the frame to our screen
            cv2.imshow("Activity Recognition", frame)
        key = cv2.waitKey(1) & 0xFF
        # if the `q` key was pressed, break from the loop
        if key == ord("q"):
            break

'

Need help in showing open cv output frame in browser

Hey I want to show the open cv frame output in window of browser. I am making flask app of human Activity Recognition.

libraries

#libraries
# import the necessary packages

packages import time

time import onnx import numpy as np import argparse import imutils import sys import cv2 from imutils.video import VideoStream from flask import Flask, render_template, request

request app = Flask(__name__)

Flask(__name__) app.secret_key = "my precious" c = open('action_recognition_kinetics.txt') @app.route('/') def home():

home():

    return render_template('harPro.html')  # render a template

@app.route('/recognize', methods= ['POST','GET']) def Recognize(): if request.method == 'POST': i = request.form['myFile'] CLASSES = c.read().strip().split("\n") SAMPLE_DURATION = 16 SAMPLE_SIZE = 112

112 # load the human activity recognition model

model
        print("[INFO] loading human activity recognition model...")
     net = cv2.dnn.readNet('resnet-34_kinetics.onnx')

     # grab a pointer to the input video stream
     print("[INFO] accessing video stream...")
     vs = cv2.VideoCapture(i if i else 0)

     # loop until we explicitly break from it
     while True:
         # initialize the batch of frames that will be passed through the
         # model
         frames = []

         # loop over the number of required sample frames
         for i in range(0, SAMPLE_DURATION):
             # read a frame from the video stream
             (grabbed, frame) = vs.read()

             # if the frame was not grabbed then we've reached the end of
             # the video stream so exit the script
             if not grabbed:
                 print("[INFO] no frame read from stream - exiting")
                 sys.exit(0)

             # otherwise, the frame was read so resize it and add it to
             # our frames list
             frame = imutils.resize(frame, width=400)
             frames.append(frame)

         # now that our frames array is filled we can construct our blob
         blob = cv2.dnn.blobFromImages(frames, 1.0,
                                       (SAMPLE_SIZE, SAMPLE_SIZE), (114.7748, 107.7354, 99.4750),
                                       swapRB=True, crop=True)
         blob = np.transpose(blob, (1, 0, 2, 3))
         blob = np.expand_dims(blob, axis=0)

         # pass the blob through the network to obtain our human activity
         # recognition predictions
         net.setInput(blob)
         outputs = net.forward()
         label = CLASSES[np.argmax(outputs)]

         # loop over our frames
         for frame in frames:
             # draw the predicted activity on the frame
             cv2.rectangle(frame, (0, 0), (300, 40), (0, 0, 0), -1)
             cv2.putText(frame, label, (10, 25), cv2.FONT_HERSHEY_SIMPLEX,
                         0.8, (255, 255, 255), 2)

             # # display the frame to our screen
             cv2.imshow("Activity Recognition", frame)
         key = cv2.waitKey(1) & 0xFF
         # if the `q` key was pressed, break from the loop
         if key == ord("q"):
             break

'