python 两种速度浏览视频

# import the necessary packages
from imutils.video import FPS
import numpy as np
import argparse
import imutils
import cv2
# 构造参数解析器并解析参数
ap = argparse.ArgumentParser()
# 解析我们的命令行参数。对于这个脚本,我们只需要一个开关 --video ,它是我们输入视频文件的路径。
ap.add_argument("-v", "--video", required=True,
    help="path to input video file")
args = vars(ap.parse_args())
# 打开一个指向视频流的指针,并启动FPS定时器
stream = cv2.VideoCapture(args["video"])
fps = FPS().start()  # 启动一个我们可以用来测量 FPS 的计时器

# 循环视频文件流中的帧
while True:
    # 从线程视频文件流中抓取帧
    (grabbed, frame) = stream.read()
    # 如果帧没有被抓取,那么我们已经到达了流的末尾
    if not grabbed:
        break
    # 调整帧大小并将其转换为灰度(同时仍保留 3 个通道)
    frame = imutils.resize(frame, width=450)
    frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    frame = np.dstack([frame, frame, frame])
    # 在图像中显示一段文本(这样我们就可以公平地对快速方法进行基准测试)
    cv2.putText(frame, "Slow Method", (10, 30),
        cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 255, 0), 2)    
    # 显示帧并更新 FPS 计数器
    cv2.imshow("Frame", frame)
    cv2.waitKey(1)
    fps.update()

# 停止定时器,显示FPS信息
fps.stop()
print("[INFO] elasped time: {:.2f}".format(fps.elapsed()))
print("[INFO] approx. FPS: {:.2f}".format(fps.fps()))
# 做一些清理工作
stream.release()
cv2.destroyAllWindows()
# 导入必要的包
from imutils.video import FileVideoStream
from imutils.video import FPS
import numpy as np
import argparse
import imutils
import time
import cv2
# 构造参数解析并解析参数
ap = argparse.ArgumentParser()
ap.add_argument("-v", "--video", required=True,
    help="path to input video file")
args = vars(ap.parse_args())
# 启动文件视频流线程并允许缓冲区开始填充
print("[INFO] starting video file thread...")
fvs = FileVideoStream(args["video"]).start()
time.sleep(1.0)
# 启动 FPS 计时器
fps = FPS().start()

# 循环播放视频文件流中的帧
while fvs.more():
    # 从线程视频文件流中抓取帧,调整大小,并将其转换为灰度(同时仍保留 3 个通道)
    frame = fvs.read()
    try:
        frame = imutils.resize(frame, width=450)
        frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        frame = np.dstack([frame, frame, frame])
        # 在frame上显示队列的大小
        cv2.putText(frame, "Queue Size: {}".format(fvs.Q.qsize()),
                (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 255, 0), 2)    
        # 显示帧并更新 FPS 计数器
        cv2.imshow("Frame", frame)
        cv2.waitKey(1)
        fps.update()
    except:
        pass

# 停止计时器并显示 FPS 信息
fps.stop()
print("[INFO] elasped time: {:.2f}".format(fps.elapsed()))
print("[INFO] approx. FPS: {:.2f}".format(fps.fps()))
# 做一些清理工作
cv2.destroyAllWindows()
fvs.stop()

使用方法:

D:\Python37>python jian2.py --video 1/11.mp4
[INFO] starting video file thread...
[INFO] elasped time: 79.63
[INFO] approx. FPS: 199.49

D:\Python37>python jian2.py --video D:\C理论\ti\01060004.mp4
[INFO] starting video file thread...

posted @ 2023-04-08 16:14  myrj  阅读(101)  评论(0编辑  收藏  举报