无人车行人识别---opencv

简介: 无人车行人识别---opencv

无人车行人识别---opencv


无人车行人识别---opencv行人检测具有极其广泛的应用:智能辅助驾驶,智能监控,行人分析以及智能机器人等领域。从2005年以来行人检测进入了一个快速的发展阶段,但是也存在很多问题还有待解决,主要还是在性能和速度方面还不能达到一个权衡。近年,以谷歌为首的自动驾驶技术的研发正如火如荼的进行,这也迫切需要能对行人进行快速有效的检测,以保证自动驾驶期间对行人的安全不会产生威胁。


本文使用 HOG + SVM 并通过NMS在Python环境下实现识别

HOG: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。HOG特征通过计算和统计图像局部区域的梯度方向直方图来构成特征.

SVM: (Support Vector Machine)指的是支持向量机,是常见的一种判别方法。在机器学习领域,是一个有监督的学习模型,通常用来进行模式识别、分类以及回归分析, 在行人检测中可以用作区分行人和非行人的分类器。


from __future__ import print_function ##兼容python2.x,python2.x同样可以加括号
from imutils.object_detection import non_max_suppression##非极大值抑制,控制多个重叠的边框(bounding box),并且将他们减少至仅有一个边框。
from imutils import paths
import numpy as np
import imutils
import argparse
import cv2
capture = cv2.VideoCapture(0)
while(True):
    # 调用hog = cv2.HOGDescriptor()来初始化方向梯度hog
    hog = cv2.HOGDescriptor()
    #调用setSVMDetector来设置支持向量机(Support Vector Machine)使得它成为一个预先训练好了的行人检测器。
    hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())
    # 获取一帧
    ret, image = capture.read()
    # 调整大小,以减少检测时间,并能够整体提高行人检测的精度。
    image = imutils.resize(image, width=min(400, image.shape[1]))
    orig = image.copy()
    #构造了一个尺度scale=1.05的图像金字塔,以及一个分别在x方向和y方向步长为(4,4)像素大小的滑窗。
    #返回一个二元组的rects,或者是图像中每一个行人的边框坐标(x,y),以及由SVM在每一次检测中返回的weights置信值
    (rects, weights) = hog.detectMultiScale(image, winStride=(4,4),
                                           padding=(8,8),scale=1.05)
    #绘制长方形
    for (x, y, w, h) in rects:
        cv2.rectangle(orig,(x,y),(x + w, y + h), (0,0,255), 2)
    #对边界框应用非最大值抑制,使用相当大的重叠阈值,以尝试保持重叠的人框
    rects = np.array([[x,y, x + w, y + h] for (x, y, w, h) in rects])
    pick = non_max_suppression(rects, probs=None, overlapThresh=0.65)#0.65的nms
    #绘制矩形
    for (xA, yA, xB, yB) in pick:
        cv2.rectangle(image, (xA, yA), (xB, yB), (0,255,0),2)
        #打印信息
        print("[INFO]: {} original boxes, {} after suppression".format(len(rects), len(pick)))
    cv2.imshow("After NMS",image)
    if cv2.waitKey(1) == ord('q'):
    break
相关文章
|
5月前
|
机器学习/深度学习 算法 Ubuntu
十年OpenCV开发以后发布的作品 - OpenCV实验大师
十年OpenCV开发以后发布的作品 - OpenCV实验大师
50 2
|
6月前
|
数据采集 Java 数据挖掘
最新Python+OpenCV+dlib汽车驾驶员疲劳驾驶检测!,2024年最新网易云java面试
最新Python+OpenCV+dlib汽车驾驶员疲劳驾驶检测!,2024年最新网易云java面试
最新Python+OpenCV+dlib汽车驾驶员疲劳驾驶检测!,2024年最新网易云java面试
|
计算机视觉
直方图均衡化处理:去雾---OpenCV-Python开发指南(45)
直方图均衡化处理:去雾---OpenCV-Python开发指南(45)
261 2
直方图均衡化处理:去雾---OpenCV-Python开发指南(45)
|
计算机视觉
Fisherfaces人脸识别---OpenCV-Python开发指南(44)
Fisherfaces人脸识别---OpenCV-Python开发指南(44)
305 1
Fisherfaces人脸识别---OpenCV-Python开发指南(44)
|
机器学习/深度学习 资源调度 计算机视觉
图像平滑处理---OpenCV-Python开发指南(17)
图像平滑处理---OpenCV-Python开发指南(17)
241 1
图像平滑处理---OpenCV-Python开发指南(17)
|
Serverless 计算机视觉 索引
凸包---OpenCV-Python开发指南(28)
凸包---OpenCV-Python开发指南(28)
331 1
凸包---OpenCV-Python开发指南(28)
|
机器学习/深度学习 Unix TensorFlow
opencv安装实录附十几行C++实现的一个人脸识别demo
opencv安装实录附十几行C++实现的一个人脸识别demo
349 0
opencv安装实录附十几行C++实现的一个人脸识别demo
|
算法 计算机视觉 Python
实现油画效果---OpenCV-Python开发指南(50)
实现油画效果---OpenCV-Python开发指南(50)
309 0
实现油画效果---OpenCV-Python开发指南(50)
|
计算机视觉
实现素描效果---OpenCV-Python开发指南(49)
实现素描效果---OpenCV-Python开发指南(49)
255 0
实现素描效果---OpenCV-Python开发指南(49)
|
编解码 算法 计算机视觉
霍夫变换---OpenCV-Python开发指南(35)
霍夫变换---OpenCV-Python开发指南(35)
228 0
霍夫变换---OpenCV-Python开发指南(35)