美文网首页
Flask-OpenCV 视频监控

Flask-OpenCV 视频监控

作者: GreatJu | 来源:发表于2019-01-17 22:35 被阅读0次
    # -*- coding: utf-8 -*-
    """
    Spyder Editor
    
    This is a temporary script file.
    """
    from flask import Flask, render_template, Response
    import cv2
    
    app = Flask(__name__)
    
    class VideoCamera(object):
        def __init__(self):
            # 通过opencv获取实时视频流
            self.video = cv2.VideoCapture(0) 
        
        def __del__(self):
            self.video.release()
        
        def get_frame(self):
            success, image = self.video.read()
            # 因为opencv读取的图片并非jpeg格式,因此要用motion JPEG模式需要先将图片转码成jpg格式图片
            ret, jpeg = cv2.imencode('.jpg', image)
            return jpeg.tobytes()
    
    
    @app.route('/')  # 主页
    def index():
        # jinja2模板,具体格式保存在index.html文件中
        return render_template('index.html')
    
    
    def gen(camera):
        while True:
            frame = camera.get_frame()
            # 使用generator函数输出视频流, 每次请求输出的content类型是image/jpeg
            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(port = 8099)
        pass
    
    <html>
      <head>
        <title>Video Streaming Demonstration</title>
      </head>
      <body>
        <h1>Video Streaming Demonstration</h1>
        <img src="{{ url_for('video_feed') }}">
      </body>
    </html>
    

    相关文章

      网友评论

          本文标题:Flask-OpenCV 视频监控

          本文链接:https://www.haomeiwen.com/subject/vkgwdqtx.html