[Python Study Notes]行人检测

# --------------------------------------------------------------
# @文件: 行人识别.py
# @工程: blog
# @时间: 2018/3/16 21:12
# @作者: liu yang
# @博客: liuyang1.club
# @邮箱: liuyang0001@outlook.com
# -------------------------------------------------------------
# 编码格式
# -*- coding: utf-8 -*-
# Python版本
# #!/usr/bin/python3

import cv2


def draw_detection(img, rects):
    for x, y, w, h in rects:
        pad_w, pad_h = int(0.05 * w), int(0.05 * h)
        cv2.rectangle(img, (x + pad_w, y + pad_h), (x + w - pad_w, y + h - pad_h), (0, 255, 0), 2)


def draw_alart(img, rects):
    area = [0, 2]
    size = img.shape
    area_img = size[0] * size[1]
    for x, y, w, h in rects:
        area.append(w * h)
    thresh = 0.25
    if max(area) / area_img > thresh:
        font = cv2.FONT_HERSHEY_SIMPLEX
        cv2.putText(img, "Incoming Peaple", (round(size[0] / 2) - 80, round(size[1] / 2) - 50),
                    font, 6, (0, 0, 255), 25)


# 传入opencv里默认的参数
hog = cv2.HOGDescriptor()
# 得到行人的特征值
hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())
# 调用摄像头,也可以传入一个路径视频文件
cap = cv2.VideoCapture(0)
while True:
    # ret是一个表
    # 循环读取每一帧的数据
    ret, frame = cap.read()
    # 扫描图像,如果检测不到进行缩小检测
    found, w = hog.detectMultiScale(frame, 0, winStride=(8, 8), padding=(8, 8), scale=1.05)
    draw_detection(frame, found)
    draw_alart(frame, found)
    # 显示每一帧的画面
    cv2.imshow("pd", frame)
    # 按q退出
    key = cv2.waitKey(1) & 0xff
    if key == ord('q'):
        break

# 运行结束后释放摄像头
cap.release()
cv2.destroyAllWindows()

转载于:https://www.cnblogs.com/liu66blog/p/8586145.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值