YOLOv5区域入侵检测【附完整代码以及视频演示】

这篇具有很好参考价值的文章主要介绍了YOLOv5区域入侵检测【附完整代码以及视频演示】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前期准备:

首先你需要有一份yolov5的官方源码,并且能够找到其中的detect.py文件即可。

在检测过程中,有些项目不需要我们检测所有的区域,比如禁止区域的入侵检测,只需要检测制定规划出来的区域就可以。例如下图所示这样,在网上随便找的一段视频,这是其中的一张截图:

二、区域检测原理分析

在使用YOLOv5的有些时候,我们会遇到一些具体的目标检测要求,比如要求不检测全图,只在规定的区域内才检测。所以为了满足这个需求,可以使用掩码操作去覆盖掉不想检测的区域,使得在检测的时候,只检测我们规定的检测范围。

YOLOv5区域入侵检测【附完整代码以及视频演示】

1、确定区域检测范围

 # mask for certain region
        #1,2,3,4 分别对应左上,右上,右下,左下四个点
        hl1 = 1.4 / 10 #监测区域高度距离图片顶部比例
        wl1 = 6.4 / 10 #监测区域高度距离图片左部比例
        hl2 = 1.4 / 10  # 监测区域高度距离图片顶部比例
        wl2 = 6.8 / 10  # 监测区域高度距离图片左部比例
        hl3 = 4.5 / 10  # 监测区域高度距离图片顶部比例
        wl3 = 7.6 / 10  # 监测区域高度距离图片左部比例
        hl4 = 4.5 / 10  # 监测区域高度距离图片顶部比例
        wl4 = 5.5 / 10  # 监测区域高度距离图片左部比例

2、在135行左右的位置:for path, img, im0s, vid_cap in dataset: 下插入代码: 

        # mask for certain region
        #1,2,3,4 分别对应左上,右上,右下,左下四个点
        hl1 = 1.6 / 10 #监测区域高度距离图片顶部比例
        wl1 = 6.4 / 10 #监测区域高度距离图片左部比例
        hl2 = 1.6 / 10  # 监测区域高度距离图片顶部比例
        wl2 = 6.8 / 10  # 监测区域高度距离图片左部比例
        hl3 = 4.5 / 10  # 监测区域高度距离图片顶部比例
        wl3 = 7.6 / 10  # 监测区域高度距离图片左部比例
        hl4 = 4.5 / 10  # 监测区域高度距离图片顶部比例
        wl4 = 5.5 / 10  # 监测区域高度距离图片左部比例
        if webcam:
            for b in range(0,img.shape[0]):
                mask = np.zeros([img[b].shape[1], img[b].shape[2]], dtype=np.uint8)
                #mask[round(img[b].shape[1] * hl1):img[b].shape[1], round(img[b].shape[2] * wl1):img[b].shape[2]] = 255
                pts = np.array([[int(img[b].shape[2] * wl1), int(img[b].shape[1] * hl1)],  # pts1
                                [int(img[b].shape[2] * wl2), int(img[b].shape[1] * hl2)],  # pts2
                                [int(img[b].shape[2] * wl3), int(img[b].shape[1] * hl3)],  # pts3
                                [int(img[b].shape[2] * wl4), int(img[b].shape[1] * hl4)]], np.int32)
                mask = cv2.fillPoly(mask,[pts],(255,255,255))
                imgc = img[b].transpose((1, 2, 0))
                imgc = cv2.add(imgc, np.zeros(np.shape(imgc), dtype=np.uint8), mask=mask)
                #cv2.imshow('1',imgc)
                img[b] = imgc.transpose((2, 0, 1))

        else:
            mask = np.zeros([img.shape[1], img.shape[2]], dtype=np.uint8)
            #mask[round(img.shape[1] * hl1):img.shape[1], round(img.shape[2] * wl1):img.shape[2]] = 255
            pts = np.array([[int(img.shape[2] * wl1), int(img.shape[1] * hl1)],  # pts1
                            [int(img.shape[2] * wl2), int(img.shape[1] * hl2)],  # pts2
                            [int(img.shape[2] * wl3), int(img.shape[1] * hl3)],  # pts3
                            [int(img.shape[2] * wl4), int(img.shape[1] * hl4)]], np.int32)
            mask = cv2.fillPoly(mask, [pts], (255,255,255))
            img = img.transpose((1, 2, 0))
            img = cv2.add(img, np.zeros(np.shape(img), dtype=np.uint8), mask=mask)
            img = img.transpose((2, 0, 1))

3、画检测区域线 :在196行: p, s, im0, frame = path, ‘’, im0s.copy(), getattr(dataset, ‘frame’, 0) 后添加文章来源地址https://www.toymoban.com/news/detail-513239.html

            if webcam:  # batch_size >= 1
                p, s, im0, frame = path[i], f'{i}: ', im0s[i].copy(), dataset.count
                cv2.putText(im0, "Detection_Region", (int(im0.shape[1] * wl1 - 5), int(im0.shape[0] * hl1 - 5)),
                            cv2.FONT_HERSHEY_SIMPLEX,
                            1.0, (255, 255, 0), 2, cv2.LINE_AA)

                pts = np.array([[int(im0.shape[1] * wl1), int(im0.shape[0] * hl1)],  # pts1
                                [int(im0.shape[1] * wl2), int(im0.shape[0] * hl2)],  # pts2
                                [int(im0.shape[1] * wl3), int(im0.shape[0] * hl3)],  # pts3
                                [int(im0.shape[1] * wl4), int(im0.shape[0] * hl4)]], np.int32)  # pts4
                # pts = pts.reshape((-1, 1, 2))
                zeros = np.zeros((im0.shape), dtype=np.uint8)
                mask = cv2.fillPoly(zeros, [pts], color=(0, 165, 255))
                im0 = cv2.addWeighted(im0, 1, mask, 0.2, 0)
                cv2.polylines(im0, [pts], True, (255, 255, 0), 3)
                # plot_one_box(dr, im0, label='Detection_Region', color=(0, 255, 0), line_thickness=2)
            else:
                p, s, im0, frame = path, '', im0s.copy(), getattr(dataset, 'frame', 0)
                cv2.putText(im0, "Detection_Region", (int(im0.shape[1] * wl1 - 5), int(im0.shape[0] * hl1 - 5)),
                            cv2.FONT_HERSHEY_SIMPLEX,
                            1.0, (255, 255, 0), 2, cv2.LINE_AA)
                pts = np.array([[int(im0.shape[1] * wl1), int(im0.shape[0] * hl1)],  # pts1
                                [int(im0.shape[1] * wl2), int(im0.shape[0] * hl2)],  # pts2
                                [int(im0.shape[1] * wl3), int(im0.shape[0] * hl3)],  # pts3
                                [int(im0.shape[1] * wl4), int(im0.shape[0] * hl4)]], np.int32)  # pts4
                # pts = pts.reshape((-1, 1, 2))
                zeros = np.z

到了这里,关于YOLOv5区域入侵检测【附完整代码以及视频演示】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 网络防御和入侵检测

    网络防御和入侵检测是维护网络安全的关键任务,可以帮助识别和阻止未经授权的访问和恶意行为。以下是一些基本的步骤和方法,用于进行网络防御和入侵检测。 网络防御: 防火墙设置: 部署防火墙来监控和控制网络流量,阻止未经授权的访问和恶意流量。 访问控制:

    2024年02月11日
    浏览(36)
  • Snort入侵检测系统实验

    实验内容 搭建网络防御环境 学习使用检测工具Snort 对网络进行攻击,查看和分析网络防御工具报告 对实验结果进行分析整理,形成结论 安装入侵检测系统 Snort 安装daq依赖程序,输入如下命令: sudo apt-get install flex sudo apt-get install bison sudo apt install aptitude sudo aptitude install l

    2023年04月19日
    浏览(32)
  • 网络安全之入侵检测

    目录 网络安全之入侵检测 入侵检测经典理论  经典检测模型 入侵检测作用与原理 意义 异常检测模型(Anomaly Detection) 误用检测模型(Misuse Detection) 经典特征案例 ​编辑自定义签名  ​编辑 签名检查过程 检测生命周期 信息收集的方法 信息分析 异常检测 --- 统计分析、

    2023年04月13日
    浏览(26)
  • 设备安全——入侵检测IDS

    IDS(入侵检测系统):对系统的运行状态进行监视,发现各种攻击企图、攻击行为、攻击结果。用于保证系统资源的安全(机密性、完整性、可用性) 设备本身(IDS系统)是一个软件与硬件的组合系统。 IDS的作用:实时监测 经典检测模型 通用的入侵检测系统抽象模型 ● 主

    2024年02月08日
    浏览(30)
  • Linux入侵检测学习笔记1

    入侵检测: 查看系统日志          查看安全相关的日志 查看异常流量 查看可疑进程 文件安全性检查 本地检测方法 云平台的检测方法 查看系统日志: 系统日志大概分两类: messages:系统日志,信息量比较大。服务的启动停止的信息。 secure:安全日志,所有系统登录的

    2024年02月09日
    浏览(33)
  • 网络安全之入侵检测系统

    入侵 :指一系列试图破坏信息资源 机密性 、 完整性 和 可用性 的行为。对信息系统的非授权访问及(或)未经许可在信息系统中进行操作。 入侵检测 :是通过从计算机网络系统中的若干 关键节点 收集信息,并 分析 这些信息,监控网络中是否有违反安全策略的行为或者是

    2024年02月13日
    浏览(37)
  • Linux入侵检测学习笔记2

    查看异常流量: iftop:动态显示网络接口流量信息: iftop工具是一款实时流量监控工具,可用于监控TCP/IP连接等,必须以root用户的身份运行。 安装方法: iftop命令的使用:   中间两个左右箭头,表示的是流量的方向。 TX:发送流量 RX:接收流量 TOTAL:总流量 Cum:运行ifto

    2024年02月09日
    浏览(54)
  • 入侵检测——IDS概述、签名技术

    IDS(intrusion detection system)入侵检测系统,是一种对网络传输进行即时监视,在发现可疑传输时发出警报或者采取主动反应措施的网络安全设备。它会对系统的运行状态进行监视,发现各种攻击企图、过程、结果,来保证系统资源的安全。 入侵检测系统模型: 检测器: 分析和

    2024年02月15日
    浏览(33)
  • 安全防御——IDS(入侵检测系统)

    IDS(intrusion detection system)入侵检测系统 是一种对网络传输进行实时监视,在发现可疑传输时发出警报或者采取主动反应措施的网络安全设备。 它与其他网络安全设备的不同之处便在于,IDS是一种积极主动的安全防护技术。 专业上讲IDS就是依照一定的安全策略,对网络、系

    2024年01月21日
    浏览(32)
  • shell脚本-入侵检测与告警

    利用inotifywait命令对一些重要的目录作一个实施监控,例如:当/root 、/usr/bin 等目录发生改变的,利用inotifywait看可以对其作一个监控作用。 inotifywait 是一个 Linux 下的命令行工具,用于监视文件系统的变化。它基于 inotify 机制,可以实时监控文件或目录的变化,并在发生变化时

    2024年02月16日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包