【Python cv2播放视频修改帧率】

源代码

注意看cv2.waitkey()方法,方法中的32意味着延迟32毫秒,那么就是每32毫秒播放一帧,那么一秒就是1000/32≈31帧

import cv2
from playsound import playsound
from threading import Thread


def func1():
    cap = cv2.VideoCapture("start.mp4")
    ret, frame = cap.read()
    while (1):
        #cv2.namedWindow('frame', cv2.WINDOW_NORMAL)
        #cv2.setWindowProperty('frame', cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)
        ret, frame = cap.read()
        cv2.imshow('frame', frame)
        if cv2.waitKey(32) & 0xFF == ord('q') or ret == False:
            cap.release()
            cv2.destroyAllWindows()
            break
        cv2.imshow('frame', frame)


def func2():
    playsound('start.MP3')


if __name__ == '__main__':
    Thread(target=func1).start()
    #Thread(target=func2).start()

所以为了加速视频,不妨把cv2.waitkey()中的数字修改,比如改为16,这样就是1000/16≈62帧

import cv2
from playsound import playsound
from threading import Thread


def func1():
    cap = cv2.VideoCapture("start.mp4")
    ret, frame = cap.read()
    while (1):
        #cv2.namedWindow('frame', cv2.WINDOW_NORMAL)
        #cv2.setWindowProperty('frame', cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)
        ret, frame = cap.read()
        cv2.imshow('frame', frame)
        if cv2.waitKey(16) & 0xFF == ord('q') or ret == False:
            cap.release()
            cv2.destroyAllWindows()
            break
        cv2.imshow('frame', frame)


def func2():
    playsound('start.MP3')


if __name__ == '__main__':
    Thread(target=func1).start()
    #Thread(target=func2).start()

方法解析:

cv2.imshow(‘frame’, frame)

cv2.imshow('frame', frame) 这行代码的功能是在名为 'frame' 的窗口中显示图像 frame

例如,如果 frame 是一帧视频图像,那么通过不断调用 cv2.imshow('frame', frame) ,就可以实现视频的逐帧显示。

在实际应用中,需要结合其他的 cv2 函数,如 cv2.waitKey 来控制显示的帧率和响应键盘事件等。比如,如果不使用 cv2.waitKey 进行适当的延迟控制,窗口可能会一闪而过或者显示异常。

cv2.waitKey(16)

cv2.waitKey(16) 函数用于在显示图像或视频时等待一段时间,并返回用户按下的键的 ASCII 值。

参数 16 表示等待的时间,单位是毫秒。也就是说,这行代码会使程序暂停 16 毫秒。

通过合理设置这个等待时间,可以控制图像或视频的显示帧率。例如,通常视频的帧率约为 25 - 30 帧每秒,对应的每帧显示时间约为 40 - 33 毫秒。这里设置为 16 毫秒,理论上可以达到约 60 帧每秒的显示效果,但实际帧率还受到计算机性能、图像处理速度等因素的影响。

如果返回值不为 -1 ,表示在等待期间用户按下了某个键,可以通过后续的判断来执行相应的操作,比如当用户按下 'q' 键时退出程序。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值