【Python】Opencv检测行人
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了【Python】Opencv检测行人,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1610字,纯文字阅读大概需要3分钟。
内容图文
![【Python】Opencv检测行人](/upload/InfoBanner/zyjiaocheng/618/d15ac68023964c6c916a65e53a05a6bc.jpg)
# coding:utf-8
import cv2
from timeit import default_timer as timer
class Predict(object):
def __init__(self):
# 获取hog检测器对象
self.hog = cv2.HOGDescriptor()
# 设置检测人的默认检测器
self.hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())
print("模型加载完成!")
# 检测i方框 包含o方框
def is_inside(self, o, i):
ox, oy, ow, oh = o
ix, iy, iw, ih = i
return ox > ix and ox + ow < ix + iw and oy + oh < iy + ih
# 将人外面的方框画出来
def draw_person(self, image, person):
x, y, w, h = person
cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 255), 2)
def detect_img(self, img):
# 在图片中检测人,
# 返回found列表 每个元素是一个(x, y, w, h)的矩形,w是每一个矩形的置信度
found, w = self.hog.detectMultiScale(img)
found_filtered = []
# 如果方框有包含,只留下内部的小方块
for ri, r in enumerate(found):
for qi, q in enumerate(found):
if ri != qi and self.is_inside(r, q):
break
else:
found_filtered.append(r)
# 将每一个方块画出来
for person in found_filtered:
self.draw_person(img, person)
return img
def detect_video(self, video_path):
vid = cv2.VideoCapture(video_path)
if not vid.isOpened():
raise IOError("Couldn't open webcam or video")
while True:
return_value, frame = vid.read()
t1 = timer()
result = self.detect_img(frame)
t2 = timer()
fps = 1 / (t2 - t1)
print(fps)
cv2.imshow("person detection", result)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
if __name__ == '__main__':
predict = Predict()
# 检测图片
if False:
img = cv2.imread("person1.jpg")
result = predict.detect_img(img)
cv2.imshow("person detection", result)
cv2.waitKey()
cv2.destroyAllWindows()
# 检测视频
if True:
video_path = 'video1.mp4'
predict.detect_video(video_path=video_path)
内容总结
以上是互联网集市为您收集整理的【Python】Opencv检测行人全部内容,希望文章能够帮你解决【Python】Opencv检测行人所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。