Flask video stream using OpenCV images
for accessing camera other than your laptop's webcam, you can use RTSP link like this rtsp://admin:12345@192.168.1.1:554/h264/ch1/main/av_stream"
where
> username:admin> password:12345> your camera ip address and port> ch1 is first camera on that DVR
replace cv2.VideoCamera(0) with this link like this for your camera and it will work
camera.py
import cv2class VideoCamera(object): def __init__(self): # Using OpenCV to capture from device 0. If you have trouble capturing # from a webcam, comment the line below out and use a video file # instead. self.video = cv2.VideoCapture(0) # If you decide to use video.mp4, you must have this file in the folder # as the main.py. # self.video = cv2.VideoCapture('video.mp4') def __del__(self): self.video.release() def get_frame(self): success, image = self.video.read() # We are using Motion JPEG, but OpenCV defaults to capture raw images, # so we must encode it into JPEG in order to correctly display the # video stream. ret, jpeg = cv2.imencode('.jpg', image) return jpeg.tobytes()
main.py
from flask import Flask, render_template, Responsefrom camera import VideoCameraapp = Flask(__name__)@app.route('/')def index(): return render_template('index.html')def gen(camera): while True: frame = camera.get_frame() yield (b'--frame\r\n' b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n\r\n')@app.route('/video_feed')def video_feed(): return Response(gen(VideoCamera()), mimetype='multipart/x-mixed-replace; boundary=frame')if __name__ == '__main__': app.run(host='0.0.0.0', debug=True)
then you can follow this blog to increase your FPS
https://www.pyimagesearch.com/2015/12/21/increasing-webcam-fps-with-python-and-opencv/