Amazing-Python-Scripts

Форк
0
78 строк · 2.0 Кб
1
# *_* coding:utf-8 *_*
2

3
__author__ = 'stone'
4
__date__ = '15-9-28'
5

6
import numpy as np
7
import cv2
8

9
vName = '../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

17
cap = cv2.VideoCapture(vName)
18

19

20
# fgbg = cv2.createBackgroundSubtractorKNN()
21

22

23
def draw_detections(img, rects, thickness=1):
24
    for 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.
27
        pad_w, pad_h = int(0.15 * w), int(0.05 * h)
28
        cv2.rectangle(img, (x + pad_w, y + pad_h),
29
                      (x + w - pad_w, y + h - pad_h), (0, 255, 0), thickness)
30

31

32
hog = cv2.HOGDescriptor()
33
hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())
34
while True:
35
    ret, frame = cap.read()
36
    if frame is None:
37
        print("视频读取完毕!")
38
        break
39
    height, width, ret = frame.shape
40
    # 视频旋转问题
41
    # center = (height, width)
42
    # angle = 30
43
    # scale = 1
44
    # rotate = cv2.getRotationMatrix2D(center, angle, scale)
45

46
    # 缩小 n 倍显示视频
47
    n = 1
48
    small_frame = cv2.resize(
49
        frame, (width / n, height / n), interpolation=cv2.INTER_CUBIC)
50

51
    # fgmask = fgbg.apply(small_frame)
52
    # median = cv2.medianBlur(fgmask, 3)
53

54
    found, w = hog.detectMultiScale(
55
        small_frame, winStride=(8, 8), padding=(8, 8), scale=1.05)
56
    draw_detections(small_frame, found, 3)
57

58
    print "found: {}".format(found)
59
    print '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

65
    cv2.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

72
    k = cv2.waitKey(1) & 0xFF
73
    if k == 27:
74
        print("终止播放!")
75
        break
76

77
cap.release()
78
cv2.destroyAllWindows()
79

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.