• 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()

     

     

  • 相关阅读:
    015_stdc_C语言
    014_stdc_C语言
    013_stdc_C语言
    012C语言
    011_stdc_C语言
    010_stdc_C语言
    009_stdc_C语言
    008_stdc_C语言
    40.委托
    39.多线程
  • 原文地址:https://www.cnblogs.com/Lin-Yi/p/9443924.html
Copyright © 2020-2023  润新知