【树莓派】yolov5 Lite,目标检测,行人检测入侵报警

news/2024/5/19 14:09:20

延续之前的程序:
https://qq742971636.blog.csdn.net/article/details/138172400

文章目录

  • 播放声音
    • pygame
    • 不出声音怎么办(调节音量)
    • 树莓派上的音乐播放器(可选)
    • 命令行直接放歌(尝试放mp3歌曲)
  • 摄像头检测与绑定
    • 如何绑定usb摄像头(我没有绑定成功)
  • 行人入侵后放歌
  • 问询、帮助

播放声音

pygame

可以使用Python的pygame库来在树莓派上播放MP3音频文件。首先,你需要确保你的树莓派上已经安装了pygame库。你可以使用以下命令在树莓派上安装pygame:

sudo apt-get update
sudo apt-get install python3-pygamepython3 -m pip install pygame

安装完成后,你可以使用以下Python代码在树莓派上播放MP3文件:

import pygamedef play_mp3(file_path):pygame.mixer.init()pygame.mixer.music.load(file_path)pygame.mixer.music.play()if __name__ == "__main__":mp3_file = "tts.mp3"  # 替换为你的MP3文件路径play_mp3(mp3_file)

这个简单的程序将初始化pygame的音频模块,加载指定的MP3文件,并开始播放。请确保将example.mp3替换为你实际的MP3文件路径。

需要注意的是,这段代码在执行pygame.mixer.init()时会占用音频设备,可能会导致其他音频应用无法使用。

这软件可以播放出音乐:

在这里插入图片描述

不出声音怎么办(调节音量)

我的pygame无法播放,我查了一些播放软件:

alsa-utilsalsa-utils是一个包含了一系列音频工具的软件包,你可以使用其中的工具来管理和调试音频设备。你可以通过以下命令安装:

sudo apt-get install alsa-utils

安装完成后,你可以使用alsamixer命令来打开一个交互式的音频控制界面,可以在这里调整音量和其他设置。

在这里插入图片描述

树莓派上的音乐播放器(可选)

在树莓派上安装播放音乐的软件通常很简单。你可以使用现有的软件包管理器(如apt)来安装各种音乐播放器。以下是几个常用的音乐播放器及其安装方法:

  1. VLC 媒体播放器

    VLC是一个功能强大的跨平台媒体播放器,它支持播放各种音频和视频格式。

    sudo apt-get update
    sudo apt-get install vlc
    

    安装完成后,你可以在图形界面中打开VLC并播放音乐。

  2. MPD(Music Player Daemon)

    MPD是一个轻量级的音乐播放器,它以守护进程的方式运行,可以通过各种客户端控制。

    sudo apt-get update
    sudo apt-get install mpd mpc
    

    安装完成后,你可以通过命令行或MPD的客户端来控制音乐播放。

  3. Mopidy

    Mopidy是一个使用Python编写的音乐播放器,支持各种音乐源和插件。

    sudo apt-get update
    sudo apt-get install mopidy
    

    安装完成后,你可以配置Mopidy以连接到各种音乐源,并使用其扩展功能。

  4. Rhythmbox

    Rhythmbox是一个简单易用的音乐播放器,集成于GNOME桌面环境中。

    sudo apt-get update
    sudo apt-get install rhythmbox
    

    安装完成后,你可以在图形界面中打开Rhythmbox并播放音乐。

这些是一些常见的音乐播放器,在树莓派上安装这些软件非常简单。根据你的偏好和需求选择合适的播放器进行安装即可。

命令行直接放歌(尝试放mp3歌曲)

这个装上:

sudo apt-get update
sudo apt-get install alsa-utilssudo apt-get update
sudo apt-get install mpg321

命令行放歌:

mpg321 -o alsa tts.mp3

在这里插入图片描述

成功播放!

摄像头检测与绑定

如何绑定usb摄像头(我没有绑定成功)

每次摄像头接入后可能会变,如何绑定usb摄像头?

安装这个:

apt install v4l-utils

查看树莓派的设备:

v4l2-ctl --list-devices

找到摄像头信息:udevadm info /dev/video5

在这里插入图片描述
创建 udev 规则: 使用你喜欢的文本编辑器创建一个新的 udev 规则文件。例如:

vim /etc/udev/rules.d/10-webcam.rules

在文件中添加一条规则,用于匹配你的摄像头,并指定固定的设备名称,比如写入:

SUBSYSTEM=="video4linux", ENV{ID_PATH}=="platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1.3:1.0", SYMLINK+="camera1_name"

重新加载 udev 规则: 保存文件后,重新加载 udev 规则以使更改生效:

sudo udevadm control --reload-rules  # 这步骤好像没用 我重启了

重新插入摄像头: 现在,重新插入你的摄像头,它应该被分配到指定的设备名称 /dev/camera1_name。

行人入侵后放歌

之前的代码加上这个代码即可:

import cv2
import os
import time
from datetime import datetime
from v5lite_e_onnx_end2end import yolov5_lite
import threadingdef play_audio_thread(file_path):"""在新线程中播放音频文件"""os.system(f'mpg321 -o alsa {file_path}')  # 使用os.system调用命令行播放音频def play_audio(file_path):"""播放音频文件"""threading.Thread(target=play_audio_thread, args=(file_path,)).start()def take_screenshot(frame, folder='images'):"""保存截图"""os.makedirs(folder, exist_ok=True)  # 创建文件夹now = datetime.now().strftime('%Y%m%d_%H%M%S')  # 当前日期时间作为文件名img_name = f'{folder}/{now}.jpg'cv2.imwrite(img_name, frame)print(f'Screenshot saved as {img_name}')def main():cap = cv2.VideoCapture(0)modelpath = 'v5lite-e_end2end.onnx'classfile = 'coco.names'net = yolov5_lite(modelpath, classfile)last_alert_time = 0  # 上次报警的时间while True:ret, frame = cap.read()if not ret:breakdetected_img, haveobj = net.detect(frame)cv2.imshow('Intrusion Alert', detected_img)current_time = time.time()if haveobj and current_time - last_alert_time > 5:  # 如果检测到人且距离上次报警超过5秒play_audio('tts.mp3')  # 播放音频last_alert_time = current_time  # 更新报警时间# 确保音频播放结束通常需要音频播放器的支持,这里简化处理直接截图take_screenshot(detected_img)if cv2.waitKey(1) & 0xFF == ord('q'):breakcap.release()cv2.destroyAllWindows()if __name__ == '__main__':main()

问询、帮助

https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2

http://www.mrgr.cn/p/01655680

相关文章

一般神经网络的微分与网络参数的初始化

(文章的主要内容来自电科的顾亦奇老师的 Mathematical Foundation of Deep Learning, 有部分个人理解) 一般深度神经网络的微分 上周讨论的前向和反向传播算法可以推广到任意深度神经网络的微分。 对于一般的网络来说,可能无法逐层分割,但仍然可以用流…

第十五届蓝桥杯省赛第二场C/C++B组D题【前缀总分】题解(AC)

暴力解法 O ( 26 n 5 ) O(26n^5) O(26n5) 枚举将第 i i i 个字符串的第 j j j 个字符改为 c c c 的所有方案,时间复杂度 O ( 26 n 2 ) O(26n^2) O(26n2),修改并计算总分, O ( n 3 ) O(n^3) O(n3)。 暴力优化 O ( 26 n 3 log ⁡ n ) O…

openGauss 函数

函数 openGauss常用的函数如下: 数学函数abs(x) 描述:绝对值。 返回值类型:和输入相同。 示例: openGauss=# SELECT abs(-17.4);abs ------17.4 (1 row)cbrt(dp) 描述:立方根。 返回值类型:double precision 示例: openGauss=# SELECT cbrt(27.0);cbrt ------3 (1 row)c…

宿舍Giwifi聚合方案

方案A: 方案B: 方案C:

在 Linux 上把 Vim 配置为默认编辑器

目录 ⛳️推荐 在 Linux 命令行中编辑 将 Vim 设置为其他程序的默认值 在 Alpine 中编辑电子邮件 总结 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站 我使用 Linux 大概有…

SpringBoot整合AOP实现打印方法执行时间切面

pom.xml<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency>代码 创建注解 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; imp…

MySQL中什么情况下会出现索引失效?如何排查索引失效?

目录 1-引言&#xff1a;什么是MySQL的索引失效&#xff1f;(What、Why)1-1 索引失效定义1-2 为什么排查索引失效 2- 索引失效的原因及排查&#xff08;How&#xff09;2-1 索引失效的情况① 索引列参与计算② 对索引列进行函数操作③ 查询中使用了 OR 两边有范围查询 > 或 …

rust中结构体的属性默认是不能修改的,要想修改可以有两种方式

Rust中结构体里面的属性默认是不支持修改的&#xff0c;而且默认不是pub的&#xff0c;要想修改的话&#xff0c;有两种方式&#xff0c;我以为和python里面的类似呢&#xff0c;但是还是需要一点技术含量的。如果想在引到外部修改&#xff0c;需要声明pub&#xff0c;如果想在…

Ubuntu 24.04 LTS x86_64 OVF (sysin) - VMware 虚拟机模板

Ubuntu 24.04 LTS x86_64 OVF (sysin) - VMware 虚拟机模板Ubuntu 24.04 LTS x86_64 OVF (sysin) - VMware 虚拟机模板 Ubuntu 24.04 LTS (GNU/Linux 6.8-generic x86_64) 请访问原文链接:Ubuntu 24.04 LTS x86_64 OVF (sysin) - VMware 虚拟机模板,查看最新版。原创作品,转…

路由选择协议三剑客--BGP协议

一、背景 边界网关协议(Border Gateway Protocol, BGP)是用来处理像因特网规模大小的网络协议,能够妥善处理好不相关路由域间的多路连接协议。BGP一般用于企业和企业之间,也就是运营商骨干网的通信,一般使用在AS内或AS间通信,在大型企业网中实现的比较多。 内部网关协议只…

Multitouch 1.27.28 免激活版 mac电脑多点触控手势增强工具

Multitouch 应用程序可让您将自定义操作绑定到特定的魔术触控板或鼠标手势。例如&#xff0c;三指单击可以执行粘贴。通过执行键盘快捷键、控制浏览器的选项卡、单击鼠标中键等来改进您的工作流程。 Multitouch 1.27.28 免激活版下载 强大的手势引擎 精心打造的触控板和 Magic …

【分布式通信】NPKit,NCCL的Profiling工具

NPKit介绍 NPKit (Networking Profiling Kit) is a profiling framework designed for popular collective communication libraries (CCLs), including Microsoft MSCCL, NVIDIA NCCL and AMD RCCL. It enables users to insert customized profiling events into different C…

Ubuntu 22.04.4 LTS磁盘扩容

安装gpartedsudo apt updatesudo apt install gparted然后启动gpartedsudo gparted启动成功会完成一个新的对话框,直接调整磁盘大小的话会提示失败扩容查看只读文件系统的详细信息,点击Information(信息) 查看磁盘的挂载位置按顺序运行以下命令sudo -i mount -o remount -r…

K8s: 部署 kubernetes dashboard

部署 Dashboard K8s 官方有一个项目叫 dashboard&#xff0c;通过这个项目更方便监控集群的状态 官方地址: https://github.com/kubernetes/dashboard 通常我们通过命令行 $ kubectl get po -n kube-system 能够查看到集群所有的组件&#xff0c;但这样的方式比较不太直观 …

Jenkins 简述及其搭建

什么是持续集成?持续集成(CI)是在软件开发过程中自动化和集成许多团队成员的代码更改和更新的过程。在 CI 中,自动化工具在集成之前确认软件代码是有效且无错误的,这有助于检测错误并加快新版本的发布。什么是持续交付?持续交付 (CD) 是指每天多次将新软件投入生产,自动…

火山引擎VeDI:如何高效使用A/B实验,优化APP推荐系统

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群在移动互联网飞速发展的时代,用户规模和网络信息量呈现出爆炸式增长,信息过载加大了用户选择的难度,这样的背景下,推荐系统应运而生,为用户提供个性化的内容推荐。推荐系统在不断迭代…

【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(三)

课程地址&#xff1a; 黑马程序员HarmonyOS4NEXT星河版入门到企业级实战教程&#xff0c;一套精通鸿蒙应用开发 &#xff08;本篇笔记对应课程第 4 - 6节&#xff09; P5《04.快速入门》 本节来实现一个 HelloWorld 效果&#xff1a; 1、打开编辑器&#xff0c;选择新建项目&…

查看svn密码

查看svn密码 下载TSvnPwd.exe, 这是一个压缩包 打开这个文件路径 C:\Users\浅笑\AppData\Roaming\Subversion\auth\svn.simple 把下载好压缩包,解压至这个目录中本文来自博客园,作者:浅笑,转载请注明原文链接:https://www.cnblogs.com/qx-blog/p/18159483

目标检测网络YOLO进化之旅

yolo系列网络在目标检测领域取得了巨大的成功&#xff0c; 尤其是在工程实践中&#xff0c; 以其出色的性能优势获得了广泛的应用落地。 YOLO的前3个版本是由同一个作者团队出品&#xff0c; 算是官方版本。 之后的版本都是各个研究团队自己改进的版本&#xff0c; 之间并无明…