YOLO基础教程(三):视频处理

与图形处理过程类似,毕竟视频是有一个个图形构成的,多的部分只是对视频的一些简单操作

源代码:

import cv2
from darkflow.net.build import TFNet
import numpy as np
import time

option = {
    'model': 'cfg/yolo.cfg',
    'load': 'bin/yolo.weights',
    'threshold': 0.3,
    'gpu': 0.7
}

tfnet = TFNet(option)

capture = cv2.VideoCapture('test.mp4')  # 读取视频
colors = [tuple(255 * np.random.rand(3)) for i in range(10)]  # 随机创建10中颜色,RGB形式
# 当视频打开时,进行处理
while capture.isOpened():
    stime = time.time()  # 计算起始时间
    ret, frame = capture.read()  # 读取每一帧,第一个参数是bool型的ret,其值为True或False,代表有没有读到图片,第二个参数是当前帧图像
    if ret:
        results = tfnet.return_predict(frame)  # 送入网络进行预测
        # 将 colors results 进行打包
        for color, result in zip(colors, results):
            tl = (result['topleft']['x'], result['topleft']['y'])
            br = (result['bottomright']['x'], result['bottomright']['y'])
            label = result['label']
            frame = cv2.rectangle(frame, tl, br, color, 3)
            frame = cv2.putText(frame, label, tl, cv2.FONT_HERSHEY_COMPLEX, 1, color, 1)
        cv2.imshow('frame', frame)  # 显示当前帧
        print('FPS {:.1f}'.format(1 / (time.time() - stime)))  # 计算帧率
        # 按 q 键退出
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    else:
        capture.release()
        cv2.destroyAllWindows()
        break

 

运行结果:

YOLO基础教程(三):视频处理_第1张图片

处理帧率(电脑GPU为 1050Ti)

FPS 16.0
FPS 12.8
FPS 12.8
FPS 10.7
FPS 12.8
FPS 11.4
FPS 12.8
FPS 16.1
FPS 16.1
FPS 16.1
FPS 16.1
FPS 12.8
FPS 16.1
FPS 12.8
FPS 12.8
FPS 16.1
FPS 16.1
FPS 12.9
FPS 13.9
FPS 12.8
FPS 16.1
FPS 12.8
FPS 12.8
FPS 12.9
......

对上述程序,进行简单修改,即可变为摄像头实时显示

将  capture = cv2.VideoCapture('test.mp4') # 读取视频 删掉改为

capture = cv2.VideoCapture(0)
capture.set(cv2.CAP_PROP_FRAME_WIDTH, 1920)
capture.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080)

即可,0指的是第一个摄像头,若有多个,则可以用1,2...

1920,1080为分辨率

你可能感兴趣的:(YOLO)