zoukankan      html  css  js  c++  java
  • python opencv3 检测人

     

     git:https://github.com/linyi0604/Computer-Vision 

     1 # coding:utf-8
     2 
     3 import cv2
     4 
     5 
     6 # 检测i方框 包含o方框
     7 def is_inside(o, i):
     8     ox, oy, ow, oh = o
     9     ix, iy, iw, ih = i
    10     return ox > ix and ox + ow < ix + iw and oy + oh < iy + ih
    11 
    12 
    13 # 将人外面的方框画出来
    14 def draw_person(image, person):
    15     x, y, w, h = person
    16     cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 255), 2)
    17 
    18 
    19 # 读入图片
    20 img = cv2.imread("../data/people2.jpg")
    21 # 获取hog检测器对象
    22 hog = cv2.HOGDescriptor()
    23 # 设置检测人的默认检测器
    24 hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())
    25 # 在图片中检测人,
    26 # 返回found列表 每个元素是一个(x, y, w, h)的矩形,w是每一个矩形的置信度
    27 found, w = hog.detectMultiScale(img)
    28 found_filtered = []
    29 # 如果方框有包含,只留下内部的小方块
    30 for ri, r in enumerate(found):
    31     for qi, q in enumerate(found):
    32         if ri != qi and is_inside(r, q):
    33             break
    34         else:
    35             found_filtered.append(r)
    36 
    37 # 将每一个方块画出来
    38 for person in found_filtered:
    39     draw_person(img, person)
    40 
    41 
    42 cv2.imshow("person detection", img)
    43 cv2.waitKey()
    44 cv2.destroyAllWindows()

     

     

  • 相关阅读:
    java移位的具体应用
    mysql计划任务(轮询执行脚本)
    算法题(1)
    transient关键字及Serializable的序列化与反序列化
    java后台调用短信接口,实现发送短信验证码的控制层实现
    防卫导弹
    C++ STL
    字母转换
    三分·三分求极值
    各种数据类型取值范围
  • 原文地址:https://www.cnblogs.com/Lin-Yi/p/9443924.html
Copyright © 2011-2022 走看看