计算机视觉--flask部署 目标检测算法,并在局域网内远端访问

news/2024/7/10 3:07:12 标签: flask, 目标检测
flask_0">1.flask框架

Flask是一个轻量级的基于Python的web框架。static 文件夹来保存静态文件,templates 文件夹存放前端页面
安装:

pip install Flask

框架代码:

from flask import *
from flask import Flask

app = Flask(__name__) //获取实例

@app.route("/")
def index():
    # return the rendered template
    return render_template("index.html") #调用前端页面 

@app.route("/test/<a>",methods=["GET"])   //指定外网访问的路径和方式,但是不能跨域访问,method默认是GET,  POST不能访问
def myqr(a):
    //此处放入你的python程序
    return response //返回需要的数据

if __name__ == '__main__':
    app.run(host='x.x.x.x',port=8080,debug=True)    //host值为你的内网ip,port为外网访问端口
    
note: 该代码在服务器运行后外网访问链接 (http://服务器ip:8080/myqr/参数值) 即可获取myqr函数的返回值

运行:
在这里插入图片描述
当host="0.0.0.0"时,可以在局域网内,通过内网IP进行远端访问。

2. 目标检测算法

(1)简介
目标检测模型YOLO,YOLO其实包括两部分:目标检测、目标识别。目标检测会给出具体的目标框位置,目标识别则会给出识别结果及置信度。

yolo是通过一个cnn网络模型来实现end-to-end的目标检测,整个流程:首先对输入的图像resize成448448的大小送入到cnn模型中,yolo中的cnn模型是将输入的图像分割成SS大小的网格,然后对每一个单元格都会预测B个边界框(bounding boxes),每个边界框都包含5个预测值:x,y,w,h 和confidence(置信度)其中x,y就是预测边界框的中心坐标,中心坐标(x,y)的预测值 是相对于该单元格左上角坐标点的偏移值,并且单位是相对于单元格大小的,与单元格对齐(即相对于当前grid cell的偏移值),使得范围变成0到1,而边界框的w和h的预测值是相对于整个图片的宽和高的比例。
在这里插入图片描述

3.实例

后端:

def detect_cv2_camera(cfgfile, weightfile):
    import cv2
    zed = sl.Camera()
    init_params = sl.InitParameters()
    init_params.camera_resolution = sl.RESOLUTION.HD720  #分辨率,分辨率越高,成像后的图像像素数就越高,图像就越清晰。
    init_params.camera_fps = 30  # Set fps at 30,帧率越高,视频越流畅,最低是30 
(。。。省略部分代码。。。。。。)
    ##结尾
    (flag, encodedImage) = cv2.imencode(".jpg", 返回的图片)    #图片转码
            if not flag:
                continue
        # yield the output frame in the byte format
        yield(b'--frame\r\n' b'Content-Type: image/jpeg\r\n\r\n' +
              bytearray(encodedImage) + b'\r\n')   #向前端页面返回图片
     
@app.route('/tt')
def index():
    return render_template("index.html")
    
@app.route("/t_demo")
def tt_demo():
    args = get_args()
    print(args.webcam)
    if args.webcam:
        return Response(detect_cv2_camera(args.cfgfile, args.weightfile),mimetype="multipart/x-mixed-replace; boundary=frame")
    else:
        return Response(detect_cv2(args.cfgfile, args.weightfile, args.imgfile))

if __name__ =="__main__":
    app.run(debug=True, host="0.0.0.0", port=7000)

前端<index.html>:

<html>
  <head>
    <title>bdlf</title>
    <style>
      div{
        margin: 0 auto;
        text-align: center;
        width: 1200px;
        height: 800px;
      }
      img{
        width: 100%;
        height: 100%;
        
      }
    </style>
  </head>
  <body>
    <div>
      <h1>linjie</h1>
    <img src="{{ url_for('tt_demo') }}">   ##与后端入口函数名保持一致
    </div>
    
  </body>
</html>

当访问 xx.xx.xx.xx:7000/tt 时,页面调用index.html, 进而调用tt_demo函数

参考链接:
目标检测yolo
基于flask的远程视频监控


http://www.niftyadmin.cn/n/643.html

相关文章

并发编程中的原子性,可见性,有序性问题

前言&#xff1a;大家好&#xff0c;我是小威&#xff0c;24届毕业生&#xff0c;在一家满意的公司实习。本篇文章是关于并发编程中出现的原子性&#xff0c;可见性&#xff0c;有序性问题。 本篇文章记录的基础知识&#xff0c;适合在学Java的小白&#xff0c;也适合复习中&am…

Java 计算相关

Java语言健壮性 Java和C最大的不同在于Java采用的指针模型可以消除重写内存和损坏数据的可能性。 Java计算精度问题 由于Java中的double类型使用64位存储一个数值&#xff0c;而有些处理器使用80位的浮点寄存器&#xff0c;但最终结果都要被截断位64位&#xff0c;这就可能会…

《数据结构》(六)八大排序(上)

生活中大家从小到大处处可见排队&#xff0c;但是排队有哪些快速的方法你了解吗&#xff1f; 八大排序排序的基本概念插入排序直接插入排序基本思想代码直接插入排序总结希尔排序基本思想代码希尔排序总结选择排序直接选择排序基本思想&#xff1a;代码直接选择排序总结堆排序堆…

24、25届如何准备实习?

24、25届如何准备实习&#xff1f; 正如标题所言&#xff0c;在这个寒冬我们24、25届的同学该如何准备实习需要的一些东西呢&#xff1f; 很巧的是本人也是24届的菜鸡一枚嘿嘿&#xff0c;不能说自己是超级大牛的那种&#xff0c;但是本人之前找实习的经历可以分享给大家&…

通道分离与合并、彩色图转换为灰度图、二值化

文章目录图像基础重要的函数图像基本知识图像基础通道分离与合并彩色图转换为灰度图二值化图像的加减乘除图像基础 矩阵分辨率8位整型图像浮点数图像 现在简单介绍下二值化、灰度图以及真彩色和假彩色 图像的二值化&#xff0c;就是将图像上的像素点的灰度值设置为0或255&am…

【C++笔试强训】第十一天

&#x1f387;C笔试强训 博客主页&#xff1a;一起去看日落吗分享博主的C刷题日常&#xff0c;大家一起学习博主的能力有限&#xff0c;出现错误希望大家不吝赐教分享给大家一句我很喜欢的话&#xff1a;夜色难免微凉&#xff0c;前方必有曙光 &#x1f31e;。 &#x1f4a6; &…

DASCTF X GFCTF 2022十月 Misc

文章目录Misc滴滴图poi&#xff1f;qoi&#xff01;ez_xxdeasy_dotsansicdockermiscMisc 滴滴图 jpg(png)后面有压缩包&#xff0c;压缩包的文件尾有段密码 是解压此压缩包的&#xff0c;而压缩包一共有两个&#xff0c;都解压看过了内容相同 \u0074\u0068\u0069\u0073\u005…

School assignment

目录 一、常用控制类汇编指令 二、编程实现统计寄存器AX中“1”和“0”的个数 三、编程实现从键盘输入10个1位整数 四、编程实现从键盘输入两个10进制的2位整数的和 五、编写程序练习直接、间接、相对、基址变址寻址 一、常用控制类汇编指令 MOV 传送字或字节. MOVSX 先…