cv2小练习

基础概念

帧率是指在单位时间内,显示的图像帧数的数量。它是衡量视频或动画流畅度的一个重要指标。帧率的单位通常是每秒帧数(Frames Per Second,简称FPS)。在数字视频和计算机图形领域,帧率是决定视频播放质量和流畅度的关键因素。一般来说,当帧率较高时,视频播放会更加流畅,动画也会更加细腻和逼真;而当帧率较低时,视频播放可能会出现不流畅、卡顿或抖动的现象。

虽然帧率本身不能直接控制倍速播放,但倍速播放的实现与帧率密切相关。倍速播放是指将视频的播放速度调整为原始速度的两倍、一半或其他倍数。在倍速播放中,视频播放的速度取决于每秒显示的帧数,即帧率。当调整倍速后,播放器会根据新的播放速度重新计算每秒显示的帧数。例如,如果将播放速度调整为2倍,那么每秒显示的帧数将增加到原来的两倍,这样就可以实现视频以加快的速度播放。

着手实践

在cv2中我们通过读取后,进入循环再不断读取文件的每一帧图片展示,达到播放视频的效果。在了解这个之后我们可以大致写出代码的基本框架。

python 复制代码
import cv2

def main():
    video = cv2.VideoCapture("1.mp4")
    while video.isOpened():
        retval,img = video.read()
        #retval代表视频中的当前帧有没有被正确读出
        if not retval:
            break
        cv2.imshow('img',img)
        key = cv2.waitKey(100)
        if key == 32:
            break
    video.release()
    cv2.destroyAllWindows()
main()

在上面的代码中,cv2.VideoCapture()里面的传参如果是文件名,最终会读取视频文件,如果传入的参数是0,那么就代表从计算机的默认摄像头读取视频,一般在笔记本上就是前置摄像头,如果输入的值是1就会打开外置摄像头,如果有多个摄像头,那么值依次增加。

代码并不长,在通过VideoCapture读取了文件之后,直接进入循环就行,在循环中读出每一帧图片展示出来。同时如果检测到我们敲击了空格就直接结束播放跳出循环。

但是,在waitkey中我们传入的参数并一定是视频原来的切帧速度,或者说根本不可能是。因此,我们在做之前就要首先确认这个值应该是多少。虽然,我们不能直接确定这个数应该是多少,但是我们可以确定视频的帧率之后再算出每一帧用了多少毫秒即可。

我们通过一段代码获得视频的帧率。

可以发现我们通过两行代码很轻易地获得了帧率。

在得到数据后,我们完善一下代码即可。

python 复制代码
import cv2

def main():
    video = cv2.VideoCapture("1.mp4")
    cap = video.get(cv2.CAP_PROP_FPS)
    print(f'视频的帧率是{cap}')
    time = int(1000/cap)
    print(f'每张照片用{time}毫秒')
    while video.isOpened():
        retval,img = video.read()
        #retval代表视频中的当前帧有没有被正确读出
        if not retval:
            break
        cv2.imshow('img',img)
        key = cv2.waitKey(time)
        if key == 32:
            break
    video.release()
    cv2.destroyAllWindows()
main()

这样我们的视频播放就是原来的倍速。如果我们想让它切换倍速,只需要让等待时间除以倍数即可。

相关推荐
EasyGBS2 小时前
通信基站/铁塔机房无人值守,国标GB28181公网平台EasyGBS视频能力怎么去管
深度学习·安全·音视频
鲲穹AI种草2 小时前
音频剪辑降噪格式转换,鲲穹音频处理大师实测分享
音视频·音频剪辑
江节胜-胜行全栈AI3 小时前
实现海康/宇视NVR硬盘录像机/IPC摄像机监控历史回放录像rstp流视频的倍数下载
音视频
金融小师妹3 小时前
多因子时间序列分析:美元与美债收益率变化对黄金价格+1.6%的影响
c语言·人工智能·git·决策树·pyqt
林墨聊AIGC4 小时前
AI分镜模板:一键生成高效短剧视觉流程
人工智能·ai作画·aigc·音视频·ai写作
程序员JerrySUN4 小时前
Jetson Edge AI 实战05:Secure Boot 到底在保护什么?PKC、SBK、Fuse 与可信启动链一次讲清【视频讲解】
arm开发·人工智能·安全·计算机视觉·目标跟踪·音视频
voipmaker4 小时前
选煤厂智能化:UWB 人员定位系统 WebAPI 对接融合通信平台实战
物联网·实时互动·json·音视频·实时音视频·web·视频
木头左6 小时前
音频转文字与说话人识别部署与使用指南
音视频
DogDaoDao6 小时前
当视频理解撞上大语言模型:一篇 37 页综述的全景拆解
人工智能·语言模型·音视频·知识图谱·视频
阿明副业观察6 小时前
AI短剧分镜秘籍:从零到电影级视觉冲击
大数据·人工智能·aigc·音视频·ai写作