利用OpenCV自带的行人检测器完成行人检测

函数detectMultiScal语法格式如下:

(rects, weights) = detectMultiScale(image [, winStride [, padding [, scale [, useMeanshiftGrouping]]]])

 其中:

  • rects——检测到的行人对应的矩形框
  • weights——矩形框的权重值
  • image——待检测图像
  • winStride——sride(步幅),HOG检测窗口移动步长
  • padding——padding(填充),边缘扩充的像素个数
  • scale——构造金字塔结构图像时,采用的缩放因子,通常情况下取[1.01, 1.05]
  • useMeanshiftGrouping——是否消除重叠的检测结果,True表示消除
    import cv2
    def detect(image,winStride,padding,scale,useMeanshiftGrouping):   
        hog = cv2.HOGDescriptor()   #初始化方向梯度直方图描述器
        #设置SVM为一个预先训练好的行人检测器
        hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())  
        #获取(行人对应的矩形框、对应的权重)
        (rects, weights) = hog.detectMultiScale(image,
                                winStride = winStride,
                                padding = padding,
                                scale = scale,
                                useMeanshiftGrouping=useMeanshiftGrouping)    
        # 绘制每一个矩形框
        for (x, y, w, h) in rects:  
            cv2.rectangle(image, (x, y), (x + w, y + h), (0, 0, 255), 2)
        cv2.imshow("result", image)     #显示原始效果
    image = cv2.imread("human.jpg") #所检测的图片
    winStride = (8,8) #每次行移动8个像素点,列移动8个像素点
    padding = (2,2) #边缘添加像素点 通常可取(8, 8) (16, 16) (24, 24) (32, 32)
    scale = 1.03 #构造金字塔结构采取的比例值
    useMeanshiftGrouping=True #消除重叠
    detect(image,winStride,padding,scale,useMeanshiftGrouping)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值