OpenCV实例(七)汽车检测

这篇具有很好参考价值的文章主要介绍了OpenCV实例(七)汽车检测。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作者:Xiou

1.概述

对于图像和视频检测中的目标类型并没有具体限制,但是,为了使结果的准确度在可接受范围内,需要一个足够大的数据集,包括训练图像的大小要一样。如果由自己构建这样的数据集(这是完全可能的)将会非常耗时。

可利用现成的数据集,在网上可以免费下载许多这样的数据集:

·The University or Illinois:

http://l2r.cs.uiuc.edu/cogcomp/Data/Car/CarData.tar.gz

·Stanford University:

http://ai.stanford.edu/~jkrause/cars/car_dataset.html

2.代码实例

需要实现功能:
1、识别出图片中的汽车对象
2、对车辆进行统计,并将统计结果展示出来

涉及到的知识点:
图像和视频的加载、展示;
基本图像绘制;
基本图像运算与处理;
形态学处理(比如降噪、腐蚀膨胀);
轮廓查找。

import cv2
import numpy as np
 
# 加载视频
cap = cv2.VideoCapture('../img/video.mp4')
 
# 背景去除
bgsubmog = cv2.createBackgroundSubtractorMOG2()
 
# 创建腐蚀膨胀的卷积核
k = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
# 设置最小宽高阈值
min_w, min_h = 90, 90
# 创建一个列表存放车辆轮廓中心点
cars = []
car_n = 0  # 车辆的个数
# 检测线的高   视频的尺寸为1280*720
line_height = 550
# 线的偏移
line_offset = 6
 
 
# 定义函数,计算中心点
def center(x, y, w, h):
    x1 = int(w / 2)
    y1 = int(h / 2)
    cx = x + x1
    cy = y + y1
    return cx, cy
 
 
while True:
    ret, frame = cap.read()
    if ret:
        # 灰度化
        cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        # 由于一些树叶也会动,形成噪点,所以进行去噪
        blur = cv2.GaussianBlur(frame, (9, 9), 5)  # 9*9可以自己设置 3*3  5*5 7*7.。。
        mask = bgsubmog.apply(blur)  # 去除背景
        # 腐蚀
        erode = cv2.erode(mask, k)
        # 腐蚀之后变小了,要膨胀
        dilate = cv2.dilate(erode, k, iterations=2)
        # 闭操作,去掉物体内部的小块
        close = cv2.morphologyEx(dilate, cv2.MORPH_CLOSE, k)
        close = cv2.morphologyEx(close, cv2.MORPH_CLOSE, k)
        # 查找轮廓
        contours, h = cv2.findContours(close, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
        # 每一帧都要画线
        cv2.line(frame, (0, line_height), (1280, line_height), (0, 255, 0), 2)
        for (i, c) in enumerate(contours):  # 拿到索引和边界
            (x, y, w, h) = cv2.boundingRect(c)  # 绘制矩形
            if w >= min_w and h >= min_h:  # 如果是车辆,绘制轮廓
                cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 0, 255))
                # 存取车的轮廓的中心点,如果中心点过线,代表有车经过
                cpoint = center(x, y, w, h)  # 计算中心点
                cars.append(cpoint)
                for (x, y) in cars:
                    # 如果车在线的上下偏移量之间,表示有车辆经过
                    if (y > line_height - line_offset) and (y < line_height + line_offset):
                        car_n += 1  # 车的数量+1
                        cars.remove((x, y))
                        print(car_n)
            else:  # 如果不是车辆,跳过
                continue
        # 显示车辆的统计信息
        cv2.putText(frame, 'Cars Count:' + str(car_n), (500, 60), cv2.FONT_HERSHEY_SIMPLEX, 2, (255, 0, 0), 5)
 
        cv2.imshow('video', frame)
    key = cv2.waitKey(33)
    if key == 113:  # 按‘q'退出
        break
 
cap.release()
cv2.destroyAllWindows()

输出结果:

OpenCV实例(七)汽车检测

3.代码功能

这段代码涉及相当多的知识,下面来解释这段代码的具体功能:

1)首先,在导入模块后声明了训练图像的基础路径。定义这样的路径很有用,因为不同计算机上训练数据所在的文件夹不一样,这样做就可避免在每个地方都要修改这个路径。

OpenCV实例(七)汽车检测

2)去除背景

OpenCV实例(七)汽车检测

3)形态处理
去除背景后通过腐蚀去掉小的噪点。

OpenCV实例(七)汽车检测

4)查找轮廓
根据上面处理完的视频,可以找到一些(车和噪点的)轮廓 ,并且在原视频绘制出来,可以看到还是有一些其他的轮廓会显示出来。

OpenCV实例(七)汽车检测
5)车辆统计
查找到有效车辆后,需要将统计的个数显示在屏幕上。文章来源地址https://www.toymoban.com/news/detail-418846.html

到了这里,关于OpenCV实例(七)汽车检测的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 现代雷达车载应用——第2章 汽车雷达系统原理 2.5节 检测基础

             经典著作,值得一读,英文原版下载链接【免费】ModernRadarforAutomotiveApplications资源-CSDN文库。         对于要测试目标是否存在的雷达测量,可以假定下列两个假设之一为真:         •H0:—测量结果仅为噪声。         •H1:—测量是噪声和目标回波

    2024年02月04日
    浏览(30)
  • 基于图像识别的自动驾驶汽车障碍物检测与避障算法研究

    基于图像识别的自动驾驶汽车障碍物检测与避障算法研究是一个涉及计算机视觉、机器学习、人工智能和自动控制等多个领域的复杂问题。以下是对这个问题的研究内容和方向的一些概述。 障碍物检测 障碍物检测是自动驾驶汽车避障算法的核心部分,它需要从车辆的感知数

    2024年02月08日
    浏览(29)
  • 新能源汽车电池包自动三维尺寸检测系统蓝光光学平面度测量仪-CASAIM

    电池包是新能源汽车核心能量源,为整车提供驱动电能。作为新能源汽车的核心部件,其品质直接决定了整车性能。 由于电池包的生产工艺相对复杂,传统的测量工具不仅测量工序复杂、精度不足,还会或多或少接触到电池表面形成瑕疵,因此高精度测量电池包提升质量品质

    2024年02月07日
    浏览(36)
  • yolov5汽车检测linux字符界面操作全流程,适合上手(含数据集近700张图片8000多个目标+训练好的模型)

    随着自动驾驶技术的不断发展,汽车目标检测成为了研究的热点。本文将介绍公开+自定义的yolov5汽车目标检测数据集以及用linux操作系统训练yolov5。 先展示一下推理结果:  GPU在13.2ms每帧,基本满足项目需要。 前段时间跟朋友一起整理了一个汽车目标的数据集,主要包括

    2024年02月03日
    浏览(29)
  • 应用于伺服电机控制、 编码器仿真、 电动助力转向、发电机、 汽车运动检测与控制的旋变数字转换器MS5905P

    MS5905P 是一款 12bit 分辨率的旋变数字转换器。 片上集成正弦波激励电路,正弦和余弦允许输入峰峰值 幅度为 2.3V 到 4.0V ,可编程激励频率为 10kHz 、 12kHz 、 15kHz 、 20kHz 。 转换器可并行或串行输出角度 和速度对应的数字量。 MS5905P 采用 LQFP44 封装 主要特点 ◼ 最大跟踪速率:

    2024年02月10日
    浏览(25)
  • OpenCV实例(九)基于深度学习的运动目标检测(二)YOLOv2概述

    对YOLO存在的不足,业界又推出了YOLOv2。YOLOv2主要通过以下方法对模型进行优化: (1)使用Batch Normalization方法对模型中每一个卷积层的输入进行归一化,缓解梯度消失,加快收敛速度,减少了训练时间,同时提高了平均检测准确率。 (2)增加Anchors机制,借助训练集的边框标签值

    2024年02月12日
    浏览(28)
  • 对于 Git 每一次提交的时间信息,什么是作者日期和提交者日期

    对于 Git 的每一次提交,在 TortoiseGit 和 IntelliJ IDEA 都可以看到这次提交的时间。但很多人不知道的是,Git 实际上对每一个提交的时间分为两个:作者日期和提交者日期。 作者日期(author date):这指的是最开始提交时,所产生的提交文件上的日期 提交者日期(committer date):

    2024年02月05日
    浏览(32)
  • OpenCV实例(一)人脸检测

    作者:Xiou 计算机视觉使很多任务成为现实,其中两项任务就是人脸检测(在图像中定位人脸)和人脸识别(将人脸识别为特定的人)。OpenCV实现了一些人脸检测和识别的算法。从安全到娱乐,这些技术在现实环境中都有应用。 介绍OpenCV的一些人脸检测和识别功能,并定义特

    2024年02月09日
    浏览(25)
  • OpenCV实例(六)行人检测

    作者:Xiou 行人检测是目标检测的一个分支。目标检测的任务是从图像中识别出预定义类型目标,并确定每个目标的位置。用来检测行人的目标检测系统被称为行人检测系统。 行人检测主要用来判断输入图片(或视频)内是否包含行人。若检测到行人,则给出其具体的位置信

    2024年02月07日
    浏览(19)
  • OpenCV实例(九)基于深度学习的运动目标检测(一)YOLO运动目标检测算法

    2012年,随着深度学习技术的不断突破,开始兴起基于深度学习的目标检测算法的研究浪潮。 2014年,Girshick等人首次采用深度神经网络实现目标检测,设计出R-CNN网络结构,实验结果表明,在检测任务中性能比DPM算法优越。同时,何恺明等人针对卷积神经网络(Convolutional Neura

    2024年02月13日
    浏览(34)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包