Amazing-Python-Scripts
78 строк · 2.0 Кб
1# *_* coding:utf-8 *_*
2
3__author__ = 'stone'4__date__ = '15-9-28'5
6import numpy as np7import cv28
9vName = '../videos/CTC_FG.028_9.mpg'10# CTC_FG.028_9.mpg
11# Homewood_BGsmokey.050_10.mpg
12# Heavenly_FG.052_09.mpg
13# CTC.BG.055_11.mpg
14# camera2.mov
15
16
17cap = cv2.VideoCapture(vName)18
19
20# fgbg = cv2.createBackgroundSubtractorKNN()
21
22
23def draw_detections(img, rects, thickness=1):24for x, y, w, h in rects:25# the HOG detector returns slightly larger rectangles than the real objects.26# so we slightly shrink the rectangles to get a nicer output.27pad_w, pad_h = int(0.15 * w), int(0.05 * h)28cv2.rectangle(img, (x + pad_w, y + pad_h),29(x + w - pad_w, y + h - pad_h), (0, 255, 0), thickness)30
31
32hog = cv2.HOGDescriptor()33hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())34while True:35ret, frame = cap.read()36if frame is None:37print("视频读取完毕!")38break39height, width, ret = frame.shape40# 视频旋转问题41# center = (height, width)42# angle = 3043# scale = 144# rotate = cv2.getRotationMatrix2D(center, angle, scale)45
46# 缩小 n 倍显示视频47n = 148small_frame = cv2.resize(49frame, (width / n, height / n), interpolation=cv2.INTER_CUBIC)50
51# fgmask = fgbg.apply(small_frame)52# median = cv2.medianBlur(fgmask, 3)53
54found, w = hog.detectMultiScale(55small_frame, winStride=(8, 8), padding=(8, 8), scale=1.05)56draw_detections(small_frame, found, 3)57
58print "found: {}".format(found)59print 'w: {}'.format(w)60
61# GsBlur = cv2.GaussianBlur(fgmask, (5, 5), 0)62# kernel = np.ones((5, 5), np.uint8)63# opening = cv2.morphologyEx(median, cv2.MORPH_CLOSE, kernel)64
65cv2.imshow("video", small_frame)66# cv2.imshow("frame", fgmask)67# cv2.imshow("test", median)68
69# if found is not ():70# cv2.waitKey(0)71
72k = cv2.waitKey(1) & 0xFF73if k == 27:74print("终止播放!")75break76
77cap.release()78cv2.destroyAllWindows()79