yolo 视频流播放并进行目标识别

news2024/12/22 13:29:13

根据视频流,实时的进行目标识别

  • 一、下载 [lal](https://github.com/q191201771/lal/releases/tag/v0.37.4)
  • 二、安装 [FFmpeg](https://ffmpeg.org/)
  • 三、完整代码演示

需要前置了解YOLO的完整操作 使用labelImg标注,YOLO进行目标训练

一、下载 lal


下载解压,并运行lalserver.exe
在这里插入图片描述
报错是因为cert.pem和key.pem的原因(无法使用https,无关紧要)
在这里插入图片描述
再运行一个输入流

ffmpeg -stream_loop -1 -re -i wjj.mp4 -c:v libx264 -preset veryfast -b:v 3000k -maxrate 3000k -bufsize 6000k -c:a aac -b:a 128k -f flv rtmp://127.0.0.1:1935/live/1

在这里插入图片描述

二、安装 FFmpeg

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
随后将下载下来的FFmpeg进行解压,再进行环境变量配置
在这里插入图片描述
在这里插入图片描述
前面两个软件下载安放位置及视频位置
在这里插入图片描述

三、完整代码演示

注意,想看见效果需要下载 VLC media player
在这里插入图片描述
他会根据挖机视频的运动,而实时框选目标
在这里插入图片描述
完整代码如下:

import cv2
from ultralytics import YOLO
import ffmpeg
import numpy as np


# 加载 YOLO 模型
model = YOLO('runs/detect/dog_detection_finetune4/weights/best.pt')  # 替换为实际模型路径

# 输入 RTMP 流地址
input_rtmp = "rtmp://127.0.0.1:1935/live/1"  # 替换为实际输入流地址
output_rtmp = "rtmp://127.0.0.1:1935/live/2"  # 替换为实际输出流地址

# 打开视频流
cap = cv2.VideoCapture(input_rtmp)
if not cap.isOpened():
    print("无法打开视频流!请检查 RTMP 地址。")
    exit()

# 获取输入流的参数
fps = int(cap.get(cv2.CAP_PROP_FPS))
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))

# 使用 FFmpeg 推流器
ffmpeg_process = (
    ffmpeg
    .input('pipe:', format='rawvideo', pix_fmt='bgr24', s=f"{width}x{height}", r=fps)
    .output(output_rtmp, format='flv', vcodec='libx264', pix_fmt='yuv420p', r=fps)
    .global_args('-loglevel', 'info')  # 打印日志信息
    .overwrite_output()
    .run_async(pipe_stdin=True, pipe_stdout=True, pipe_stderr=True)  # 允许读取日志
)

# 打印 FFmpeg 输出日志
def print_ffmpeg_logs(process):
    for line in process.stderr:
        print(line.decode('utf-8'), end='')

# 处理视频流
while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        print("读取视频帧失败,可能是视频结束。")
        break

    # 使用 YOLO 对当前帧进行目标识别
    results = model.predict(frame, imgsz=640, conf=0.5, iou=0.5)
    for result in results:
        boxes = result.boxes
        for box in boxes:
            x1, y1, x2, y2 = map(int, box.xyxy[0])
            conf = box.conf[0]
            cls = int(box.cls[0])
            label = f"{model.names[cls]} {conf:.2f}"

            # 绘制检测框和标签
            cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2)
            cv2.putText(frame, label, (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)

    # 将处理后的帧传递给 FFmpeg 推流器
    ffmpeg_process.stdin.write(frame.tobytes())

# 打印推流结束日志
print_ffmpeg_logs(ffmpeg_process)

# 释放资源
cap.release()
ffmpeg_process.stdin.close()
ffmpeg_process.wait()
print("推流结束。")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2263754.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分类模型的预测概率解读:3D概率分布可视化的直观呈现

背景 在分类模型中,预测概率不仅是结果,更是模型决策的关键依据。为了更直观地理解这些概率分布,3D可视化提供了一种生动的展示方式,本文通过3D概率分布图,直观展示分类模型的预测概率 代码实现 基于时间序列的3D分…

【Spring】获取Bean对象需要哪些注解

阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 一:Service(服务存储) 1:存储bean的代码 2&#xff1…

【C++】哈希表实现

目录 一、哈希概念 1.1 直接定址法 1.2 哈希冲突 1.3 负载因子 1.4 将关键字转为整数 二、哈希函数 2.1 除法散列法/除留余数法 2.2 乘法散列图(了解即可) 2.3 全域散列法(了解即可) ​编辑 三、处理哈希冲突 3.1 开放…

Android-相对布局RelativeLayout

相对布局在摆放子视图位置时,按照指定的参考系来摆放子视图的位置,默认以屏幕左上角(0,0)位置作为参考系摆放位置 了解一下接下来都会以代码的方式可视化出来 属性 可选值 说明 layout_alignParentTop true/false 是否让控件相对于父容器顶部对齐 …

Intellij配置scala运行环境

文章目录 Intellij配置scala运行环境下载地址安装插件设置sdk与scala scala项目创建安装可能出现的错误 Intellij配置scala运行环境 下载地址 在centos7上安装intellij https://www.jetbrains.com/idea/download/other.html解压后进入文件夹启动打开ide ./idea-IC-232.1033…

【批量生成WORD和PDF文件】根据表格内容和模板文件批量创建word文件,一次性生成多个word文档和批量创建PDF文件

如何按照Word模板和表格的数据快速制作5000个word文档 ? 在与客户的合作的中需要创建大量的合同,这些合同的模板大概都是一致的,是不是每次我们都需要填充不一样的数据来完成? 今天用表格数据完成合同模板的填充,批量…

深度网络结构中的梯度消失与爆炸原理分析

原理 梯度消失的定义 在深度神经网络中,梯度消失是指在误差反向传播过程中,接近输入层的层次上梯度趋近于零的现象。这导致网络权重的更新非常缓慢,甚至停止,使得训练过程变得极其困难。主要发生在使用Sigmoid或Tanh等饱和激活函…

请求go web后端接口 java安卓端播放视频

前端代码 添加gradle依赖 implementation com.squareup.retrofit2:retrofit:2.9.0 implementation com.squareup.retrofit2:converter-gson:2.9.0 添加访问网络权限 <uses-permission android:name"android.permission.INTERNET" />允许http 请求请求 andro…

乐凡信息智能安全管控方案:助力油气田行业安全管控多方位升级

我国油田地域广阔&#xff0c;分布着大量各种油井&#xff0c;油井开采设备的连续稳定运行是保证石油开采的首要条件。然而&#xff0c;由于油田多位于特殊地理环境中&#xff0c;因而实现油井之间的通信首要问题就是要克服地理环境所带来的限制&#xff0c;传统通信系统的建设…

编辑, 抽成组件

问题 错误思路&#xff1a; 1 dept不能修改&#xff0c; 用watch监听一下&#xff1a;赋值给新的变量进行修改&#xff0c; 问题&#xff1a; currentDept 发生改变&#xff0c; depth也发生了改变&#xff0c;因为是浅拷贝&#xff0c; 用了json.pase(json.stringify(value…

<项目代码>YOLO Visdrone航拍目标识别<目标检测>

项目代码下载链接 &#xff1c;项目代码&#xff1e;YOLO Visdrone航拍目标识别&#xff1c;目标检测&#xff1e;https://download.csdn.net/download/qq_53332949/90163918YOLOv8是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一…

如何从全局视角规划项目与战略决策(“精准接送”案例、技术架构设计与选型、业务逻辑及产品商业模式探讨)

文章目录 1. 引言2. 项目背景与需求分析2.1 业务背景&#xff08;5W分析法&#xff09;2.2 需求概述功能需求非功能需求 2.3 典型挑战 3. 技术架构设计与选型3.1 技术选型扩展表3.2 架构设计的深度思考3.2.1 核心架构原则3.2.2 实际架构实践 4. 业务逻辑及产品商业模式探讨4.1 …

QT exe文件设置图标【终极解决方案!】

会报错&#xff1a;makefile error 1 将图片转换成ico文件&#xff0c;不能自己改后缀&#xff01;多试几个转换的网站&#xff0c;下面是我使的转换网站【成功了】 在线转换网址&#xff1a; https://onlineconvertfree.com/zh/convert/jpg/ 将图片放在.pro同级下 .pro和…

JAVA:组合模式(Composite Pattern)的技术指南

1、简述 组合模式(Composite Pattern)是一种结构型设计模式,旨在将对象组合成树形结构以表示“部分-整体”的层次结构。它使客户端对单个对象和组合对象的使用具有一致性。 设计模式样例:https://gitee.com/lhdxhl/design-pattern-example.git 2、什么是组合模式 组合模式…

CTFHUB 历年真题 afr-1

发现传参为 ?phello&#xff0c;尝试 ?pflag 发现都是 no 尝试假设它是个PHP文件&#xff0c;利用php伪协议 ?pphp://filter/readconvert.base64-encode/resourceflag 得到 base64 编码再解码发现了本题的 flag n1book{afr_1_solved}

共创共建!葡萄城 SpreadJS 完成 HarmonyOS NEXT 操作系统兼容认证

最新技术资源&#xff08;建议收藏&#xff09; https://www.grapecity.com.cn/resources/ 近日&#xff0c;华为“企业工作必备应用鸿蒙化论坛”在北京圆满落幕&#xff0c;论坛汇聚了众多行业精英和合作伙伴&#xff0c;聚焦讨论企业数字化转型与原生鸿蒙生态融合等话题。葡萄…

Android学习(二)-Kotlin编程语言学习

接上篇文章&#xff0c;我们写如下语法&#xff0c;重新赋值&#xff0c;你会发现报错了&#xff0c;是因为val关键字等同于Java中的final&#xff0c;是无法被改变的&#xff0c;如果想更改数值&#xff0c;换成var即可 函数学习 函数的基本概念 函数是用于封装一段代码的载…

【JavaEE进阶】第一个Spring Boot程序

目录 &#x1f334;安装插件 &#x1f384;Spring Boot介绍 &#x1f333;Spring Boot项目创建 &#x1f6a9;创建Spring Boot项目 &#x1f3c0;jar 包下载不下来问题 &#x1f6a9;启动项目 &#x1f332;目录介绍 &#x1f6a9;src文件 &#x1f6a9;target文件 &…

Oracle 中间件 Webcenter Portal服务器环境搭建

环境信息 服务器基本信息 如下表&#xff0c;本次安装总共使用2台服务器&#xff0c;具体信息如下&#xff1a; Webcenter1服务器 归类 SOA服务器 Ip Address 172.xx.xx.xx.xx HostName wcc01.xxxxxx.com Alias wccprd01 Webcenter2服务器 归类 OSB服务器 Ip Addr…

浅谈文生图Stable Diffusion(SD)相关模型基础

1.U-Net模型基础 1.基础概念 UNet模型是一种基于卷积神经网络的图像分割算法&#xff0c;它采用了U型的网络结构&#xff0c;由编码器&#xff08;下采样路径&#xff09;和解码器&#xff08;上采样路径&#xff09;两部分组成。 编码器负责提取输入图像的特征&#xff0c;…