实时监控RTSP视频流并通过YOLOv5-seg进行智能分析处理

在完成RTSP推流之后,尝试通过开发板接收的视频流数据进行目标检测,编写了一个shell脚本实现该功能,关于视频推流和rknn模型的部署请看之前的内容或者参考官方的文档。

#!/bin/bash
# 设置脚本使用的shell解释器为bash

SEGMENT_DIR="./segmented_videos"
# 定义一个变量SEGMENT_DIR,用于存储分割后的视频文件的目录路径

mkdir -p "$SEGMENT_DIR"
# 使用mkdir命令创建SEGMENT_DIR指定的目录,如果目录已存在则不会报错

capture_and_segment() {
    ffmpeg -i rtsp://10.19.15.28:8554/camera_test -c copy -map 0 -f segment -segment_time 5 -reset_timestamps 1 -strftime 1 "${SEGMENT_DIR}/output_%Y-%m-%d_%H-%M-%S.mp4" &
    echo $! > "ffmpeg_pid.txt"
}
# 定义一个名为capture_and_segment的函数,该函数使用ffmpeg命令从RTSP流中捕获视频,并将其分割为5秒的片段。每个片段的文件名包含当前的时间戳。同时将ffmpeg进程的PID写入到ffmpeg_pid.txt文件中。

run_yolov5_demo() {
    local video_file="$1"
    echo "Processing $video_file"
    ./yolov5seg_videocapture_demo ./model/yolov5s_seg.rknn "$video_file"
    rm "$video_file"
    echo "Finished processing $video_file"
}
# 定义一个名为run_yolov5_demo的函数,该函数接受一个视频文件作为参数,并使用yolov5seg_videocapture_demo程序和预训练的YOLOv5分割模型对视频进行分割。处理完成后删除原始视频文件。

cleanup() {
    echo "Cleaning up..."
    kill $(cat ffmpeg_pid.txt)
    rm ffmpeg_pid.txt
    rm -f ${SEGMENT_DIR}/*.mp4
    exit
}
# 定义一个名为cleanup的函数,该函数用于在脚本被中断时执行清理操作。它会杀死ffmpeg进程,删除ffmpeg_pid.txt文件,以及删除SEGMENT_DIR目录下的所有mp4文件。

trap cleanup SIGINT
# 使用trap命令注册cleanup函数,以便在脚本接收到SIGINT信号(通常是由于用户按下Ctrl+C)时执行清理操作。

capture_and_segment
# 调用capture_and_segment函数开始捕获和分割视频流。

while inotifywait -q -e close_write --format '%w%f' "${SEGMENT_DIR}"; do
    latest_file=$(ls -t ${SEGMENT_DIR}/*.mp4 | head -n 1)
    if [[ -f "$latest_file" ]]; then
        find ${SEGMENT_DIR} -type f -name '*.mp4' ! -name "$(basename "$latest_file")" -exec rm {} +
        run_yolov5_demo "$latest_file"
    fi
done
# 使用while循环和inotifywait命令监控SEGMENT_DIR目录,当有新的视频文件被关闭写入时,找到最新的视频文件,删除其他文件,然后调用run_yolov5_demo函数处理最新的视频文件。

该脚本实现了一个自动化的视频监控流程,通过ffmpeg实时捕获RTSP视频流并分割成5秒一段的视频文件,然后利用YOLOv5模型对这些视频片段进行图像分割处理。脚本还包括后台处理、进程PID管理、文件系统事件监控以及资源清理功能,确保在接收到中断信号时能够妥善终止进程并清理文件,有效管理存储空间。测试结果如下所示
在这里插入图片描述
由于实例分割模型的FPS较低,所以有较高的延迟,后续可以使用目标检测模型进行测试,效果应该会更好。

最近更新

  1. TCP协议是安全的吗?

    2024-05-01 18:54:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-01 18:54:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-01 18:54:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-01 18:54:02       20 阅读

热门阅读

  1. qt对话框功能介绍

    2024-05-01 18:54:02       7 阅读
  2. 2024年五一数学建模竞赛赛题浅析-助攻快速选题

    2024-05-01 18:54:02       13 阅读
  3. 学习mysql相关知识记录

    2024-05-01 18:54:02       11 阅读
  4. 大模型LoRA微调调参的实战技巧

    2024-05-01 18:54:02       15 阅读
  5. 在编程中,方法和函数都是什么意思

    2024-05-01 18:54:02       14 阅读
  6. C语言创建文件夹和多级目录

    2024-05-01 18:54:02       14 阅读