精华内容
下载资源
问答
  • 这个27941秒数,就是提取视频多少秒。如果整个视频提取的话,可以用VideoAd.Duration即视频总长度替代。 video.FrameRate视频每秒多少帧图片。你如果想要60秒提取一帧的话,那么 60*FrameRate 设定为循环的步长...

    在这里插入图片描述

    这个27941是秒数,就是提取视频多少秒。如果整个视频提取的话,可以用VideoAd.Duration即视频总长度替代。

    video.FrameRate是视频每秒多少帧图片。你如果想要60秒提取一帧的话,那么 60*FrameRate 设定为循环的步长就可以提取了。

    
    clc;
    clear;
    
    %% 读取视频
    video_file='C:\Users\49786\Desktop\Fog20200313000026.mp4';
    video=VideoReader(video_file);
    frame_number=floor(27941* video.FrameRate);
    n=video.FrameRate*60;
    
    %% 分离图片
    k=1;
    for i=1:n:frame_number
        image_name=strcat('C:\Users\49786\Desktop\imges2\',num2str(k));
        image_name=strcat(image_name,'.jpg');
        I=read(video,i);            %读出图片
        imwrite(I,image_name,'jpg');      %写图片
        k=k+1;
        I=[];
    
    end
    ``
    
    
    展开全文
  • 1.某一帧是你具体知道的某一帧,比如在我做过的人脸标记工作中,在某一帧出错误了,就需要找到这一帧的画面,具体分析原因 2.这里需要了解一个概念,fps:每秒多少帧,了解了这个之后尼,根据自己的需求,参考一下...


    前言

    有时,我们在看一段视频时,又好看的画面,可以当作桌面背景,或者是喜欢的明星,好看的美女姐姐等,我们都可以通过程序实现截取


    说明:
    1.某一帧是你具体知道的某一帧,比如在我做过的人脸标记工作中,在某一帧出错误了,就需要找到这一帧的画面,具体分析原因
    2.这里需要了解一个概念,fps:每秒多少帧,了解了这个之后尼,根据自己的需求,参考一下代码,完成自己的需求
    3.某一秒既可以指一秒的时间内的所有画面,也可以指一秒之内的任意画面(即任意帧)
    4.本质上某几秒的画面,和某一秒之内所有画面有着异曲同工之妙
    5.某一帧,某一秒中的任意一帧也有着异曲同工之妙


    一、某一帧

    连续的画面是有许多帧组成了,一帧就是一个画面,了解了这些,就开始操作了
    注释很详细的哦!
    记得点赞哦!

    import cv2
    cap = cv2.VideoCapture('../test/04.mp4') #需要读取的视频路径
    n=0 #帧数
    while cap.isOpened():#成功打开摄像头,或者成功读取视频
        # 从摄像头或者视频读取一帧,ret是表明成功与否
        ret, frame = cap.read()
        if ret:#读取成功
            n+=1#表明是第一帧
        
            if n==20:#假设第二十帧是我们想要的画面
            	#第一个参数里面一定要有要保存的照片格式,例如.jpg .jpeg .png
            	#名称可以随便 
                cv2.imwrite(f"第{n}帧"+".jpg",frame) 
            	#cv2.imshow('frame',frame) #放到此处只展示第二十帧的画面 
    			#cv2.waitKey(0)
    			
            #展示画面,即显示cap读取的内容
            cv2.imshow('frame',frame)
        else:
            break
        # 监听键盘,按下q键退出
        if cv2.waitKey(25) & 0xFF == ord('q'):
            break
    ##释放
    cap.release()
    #销毁所有窗口
    cv2.destroyAllWindows()
    

    二、某一秒

    import cv2
    
    def fps(path):
        video = cv2.VideoCapture(path)
        # 找到cv2版本号
        (major_ver, minor_ver, subminor_ver) = (cv2.__version__).split('.')
        if int(major_ver) < 3:
            FPS = video.get(cv2.cv.CAP_PROP_FPS)
        else:
            FPS = video.get(cv2.CAP_PROP_FPS)
        video.release()
        return FPS
    Path="../test/04.mp4"
    cap = cv2.VideoCapture(Path) #需要读取的视频路径
    n=0 #帧数
    s=2 #秒  需要获取那一秒的画面(所有)
    fp = fps(Path)#需要通过fps计算秒数
    #print(fp)
    while cap.isOpened():#成功打开摄像头,或者成功读取视频
        # 从摄像头或者视频读取一帧,ret是表明成功与否
        ret, frame = cap.read()
        if ret:#读取成功
            n+=1#表明是第一帧
            if int(n/fp)==(s-1):#通过取整,获取当前的秒数,-1是因为计算机是从0开始,我们是从1开始,所以需要减一
                cv2.imwrite(f"第{int(n/fp)}秒_第{n}帧"+".jpg",frame)
    		#这里保存的是某一秒之内的所有帧数画面,需要注意命名问题,如果命名重复,则会覆盖原来的图象
            #展示画面,即显示cap读取的内容
            cv2.imshow('frame',frame)
        else:
            break
        # 监听键盘,按下q键退出
        if cv2.waitKey(25) & 0xFF == ord('q'):
            break
    ##释放
    cap.release()
    #销毁所有窗口
    cv2.destroyAllWindows()
    

    三、某几秒

    import cv2
    
    def fps(path):
        video = cv2.VideoCapture(path)
        # 找到cv2版本号
        (major_ver, minor_ver, subminor_ver) = (cv2.__version__).split('.')
        if int(major_ver) < 3:
            FPS = video.get(cv2.cv.CAP_PROP_FPS)
        else:
            FPS = video.get(cv2.CAP_PROP_FPS)
        video.release()
        return FPS
    Path="../test/04.mp4"
    cap = cv2.VideoCapture(Path) #需要读取的视频路径
    n=0 #帧数
    start = 2 #开始的秒
    end =3 #结束的秒
    a=0
    fp = fps(Path)
    print(fp)
    while cap.isOpened():#成功打开摄像头,或者成功读取视频
        # 从摄像头或者视频读取一帧,ret是表明成功与否
        ret, frame = cap.read()
        if ret:#读取成功
            n+=1#表明是第一帧
            # 通过取整,获取当前的秒数,-1是因为计算机是从0开始,我们是从1开始,所以需要减一
            # end没有减一是因为python里面 in () 括号是一个左闭右开的区间,不需要减一
            #这里选区的是2-3秒,存在歧义,此处是1-2秒,2-3秒,总共2秒的时间
            #如果只需要start-end之间的秒的话,只需要把end改为end-1即可
    
            if int(n/fp) in (start-1,end):
                cv2.imwrite(f"第{int(n/fp)}_第{n}帧"+".jpg",frame)
    
            #展示画面,即显示cap读取的内容
            cv2.imshow('frame',frame)
        else:
            break
        # 监听键盘,按下q键退出
        if cv2.waitKey(25) & 0xFF == ord('q'):
            break
    ##释放
    cap.release()
    #销毁所有窗口
    cv2.destroyAllWindows()
    

    总结

    以上几种方法都有异曲同工之妙,稍加注意就会发现
    我们需要主义的是使用VideoCapture函数是,传参和不传参的区别(不传参:通过摄像头输入,传参:视频输入)
    为了计算秒数,我们需要获取视频的fps
    相关文章:
    获取视频fps、总帧数

    脸部标记详解——摄像头输入


    写于2021.05.10 17:04
    恰饭时间到~

    展开全文
  • 一帧1920*1080的画面比特数 =1920*1080 bits =1920*1080/8 byte =259 200 B =1920*1080/8/1024 KB =253.125 KB ...具体做法把电影画面的第一帧变成成两个画面,第二帧变成3个画面,第三帧变成两个画面,第四帧...

    一帧1920*1080的画面比特数 = 1920*1080 bits = 1920*1080/8 byte = 259 200 B = 1920*1080/8/1024 KB = 253.125 KB

    (ps:红色字体表示位深度为8时的情况,分辨率为1920*1080图片大小 = 1920*1080 * (8/8*3) byte = 6 910 KB)

    高清电视节目都是以24帧/秒的标准拍摄的,电视的刷新率却是60HZ,就是说电视画面一秒种刷新60次。

    而要在一台每秒刷新60次的显示设备上播放每秒24帧的图像,你必须填补,或者说再创造画面来满足每秒60次的刷新。

    具体做法是把电影画面的第一帧变成成两个画面,第二帧变成3个画面,第三帧变成两个画面,第四帧变成3个。这种分成2~3帧的专业术语叫场频。

    意思好像是说原始信号首先要经过播放机进行隔行化(24帧的画面变成60场),接着信号到了电视,电视再把他们去隔行化以1080p的画质显示出来。

    带宽与网速的关系

    所谓 1M 宽带,其实是指 1Mbps (兆比特每秒),亦即 1 x 1024 / 8 = 128KB/sec,但这只是理论上的速度,实际上则要再扣约 12% 的信息头标识等各种控制讯号,故其传输速度上限应为 112KB/sec 左右。

    按理论上速度,要稳定播放1920*1080高清电视节目,需要的带宽:

    带宽 = 253.125  * 24  / 128  = 47.4609375 M

    (带宽 = 6 910  * 24  / 128  = 1 276.875 M)

    按12%控制讯号损耗计算:

    带宽 = 253.125  * 24  / 112 = 54.241071428571 M

    (带宽 = 6 910  * 24  / 112 = 1 480.7142857143 M)

    理论上,如果视频未压缩,直接网络传输的话至少需要48M(1 277M)宽带才能正常播放。

    同理可得2k 4k 8k等分辨率的画质影片。

    实际上,视频并不会以原始大小在网络上传输,一般都需经过压缩的(有损或无损压缩),不同的格式压缩率不同,常见的格式有:

    • wmv,avi,dat,asf,mpeg,mpg,
    • rm,rmvb,ram,flv,mp4,3gp,
    • mov,divx,dv,vob,mkv,qt,
    • cpk,fli,flc,f4v,m4v,mod,
    • m2t,swf,webm,mts,m2ts,3g2,
    • mpe,ts,div,lavf,dirac,

    压缩率越高,对宽带要求越小,对终端芯片要求越高(因为要解压才能正常播放)。

    而压缩率大小 取决于 原始视频数据和压缩算法。

    原始视频数据这个一般是我们要看到原图像,我们一般不能控制的,我们能改变的只有压算法。

    压缩算法也有相关限制。1.无损压缩和有损压缩。2.是否支持边播边下载。3.算法编写人技术水平。

    具体各种格式的压缩算法的压缩率,以后有时间在研究了。这里只说下压缩率的计算方法。同一种

    压缩率=1-压缩后视频大小/原始视频大小 * 100%

    原始视频大小 = 视频时长 * 分辨率 * 帧数。 例如 一部24帧/秒的标准拍摄的电视剧,1集时长25分钟,分辨率为1920*1080,位深度为8。那他的原始视频大小 = 25*60s * 1920*1080 bits/帧  * 24帧/秒 = 25*60 * 253.125 KB ≈ 370.789 MB.

    (原始视频大小 = 25*60s * 6 910 KB/帧   * 24帧/秒 = 245 160 000 KB ≈ 232.89 GB.)

    压缩后视频大小即对应的视频文件大小。

    ps:以上黑色字体是没考虑位深度,或者默认位深度为1,即图像只有黑白2色的情况。实际我们常见的视频文件位深度为8,RGB分别有3个通道,所以每个像素点需要3*8位,即3个字节。此时分辨率为1920*1080图片大小 = 1920*1080 * 3 byte = 6 910 KB

     

    根据 压缩率估算需要宽带大小(点击参考)

    根据jpg压缩率96.08%计算,估算出1920*1080分辨率的视频需要流畅播放宽带一般要大于

    (带宽 = 6 910  * 24  / 112 * (1-96.08%)  = 58.044 M)

    根据mp4压缩率98.73%计算,估算出1920*1080分辨率的视频需要流畅播放宽带一般要大于

    (带宽 = 6 910  * 24  / 112 * (1-98.73%)  = 18.54 M)

    实际上,相同的压缩算法(如jpg),不同图片压缩率有可能差异很大的,有些图片(如颜色全黑)可能压缩率能达到99.99%,有些图片颜色比较复杂,压缩率可能就只有10%或者20%。

    所以一般直播画质要求高的,带宽要求也非常的高。

     

     

    展开全文
  • 今天遇到个问题,需要计算一下CAN总线上,不同的波特率下,每秒钟最多能够传输多少帧数据,或者说,每数据需要耗时多少时间。开始以为这个东西很基础的确定性数据,百度上应该随便就能查得到,可是查了半天...

    今天遇到一个问题,需要计算一下CAN总线上,不同的波特率下,每秒钟最多能够传输多少帧数据,或者说,每帧数据需要耗时多少时间。一开始以为这个东西是很基础的确定性数据,百度上应该随便就能查得到,可是查了半天却毫无头绪,不知道是不是我的打开方式不对(^ O ^)。一怒之下,干脆自己来。

    首先我们要确认几个输入参数,包括CAN总线的波特率,要传输的帧类型和帧格式,然后根据CAN协议规范,计算出该帧的bit数。我们用数据帧来做示例,详见图1。在这里插入图片描述
    最后综合起来,便得到我们想要的结果,其实很简单,如图2所示:
    在这里插入图片描述
    当然,如果你要计算远程帧的,那就用下面这张图就好:
    在这里插入图片描述
    好啦,就这么简单!

    为了方便起见,我将上述的过程整理成了一个excel表格,只需要手工修改几个参数便可完成所有过程的自动计算,如下图:
    在这里插入图片描述
    实际的表格,我上传到CSDN了【CAN总线负载率计算器】,有需要的可以自行下载。当然,考虑到下载需要积分(这里要澄清一下,本来我上传时是选择不需要积分下载的,但是CSDN会自动调整,这不是我能左右的),如果积分不多,也可以直接留言邮箱给我,我单独发给你。

    OK,打完收工!

    展开全文
  • 视频多少帧时才不卡顿

    千次阅读 2019-07-03 20:16:11
    数字电影及你所说的视频序列静止画面组成的,这些静止的画面称为。一般来说,帧率低于15/,连续的运动视频就会有停顿的感觉。我国采用的电视标准PAL制,它规定视频每25(隔行扫描方式),每625...
  • 最近尝试做一个酷跑类型游戏的游戏场景...游戏引擎里面有一个帧循环,多少帧率,就是游戏引擎每能播放多少张图片,写上scheduleUpdate()函数就是表示启动时间调度,这样每走一帧,就会调用一次一个需要用户自己...
  • 关于速率

    千次阅读 2020-01-29 15:53:35
    在视频中所说的“(frame)”,在胶片时代称为“格”,在数码时代其实指的就是幅静态图像;所谓“速率(Frame Rate)”,也称“帧率”、“格数”,指的录制或播放多少幅静...
  • 视频编解码IBP

    2018-03-02 10:21:23
    以及Gop(表示多少秒一个I)码率:编码器每秒变出多少数据大小,单位kbps,比如800kbps代表编码器每秒产生800kb(或100KB)的数据分辨率:单位英寸所包含的像素点;VGA:Video Graphics Array (视频图像分辨率)三者...
  • 在最近的实验中发现:如果每百毫秒,像素变化量在20-30之间,元素移动的视觉... 电影一般24/或30(不是整数)/,大陆电视25/)有相似之处。 注:左右,上小的像素变化量只要有个在这个范围就可以了。
  • C4D学习笔记1-动画-动画关键

    千次阅读 2020-04-09 16:08:59
    学习教程: ....帧频 每播放多少张图片 ...默认界面下30,播放90用3 二.动画分类 1.关键动画 -PSR:postion scale rotation -PLA: point level animation 各类参数动画 2.非关键动画 动...
  • Silverlight中的

    2009-12-25 17:19:00
    但是我们从动画原理知道,动画只不过是一幅幅静态图片连续播放,利用人眼的视觉暂留形成的,因此任何动画从原理上讲,至少还是有每播放多少帧这个概念的。 Silverlight的sdk文档中,有段话: ...maxFramerate ...
  • 如何按照来保存摄像头图片使用环境版本摄像头说明初步测试测试...目前手上的全30的摄像头, 也有个330的,这个330的摄像头,说实话, 有点慌,每不知道能保存多少张。 初步测试 private void videoSou
  • 定格动画,又名逐动画,是一种动画技术,其原理即将每不同的图像连续播放,从而产生动画效果。 简单的来说就是: 以一定的速度切换几张连续图像,让它动起来。 人眼的物理性能能识别多少帧? 理论上说,...
  • 在使用以太网测试仪中,千兆以太网的带宽可以定义为一个网元每1秒钟可以发送1,000,000,000 bits,即每10亿个1或0。...由于物理上采用的CSMA/CD(带冲突检测的载波监听多路访问技术),所以发完一帧之后不能马上发第
  • 既然上次我们讲到了动画,这次我们就来讲一下对...pygame.time.Clock对象帮助我们确定程序要以多少最大的速率运行,这个对象在游戏每次迭代都会设置个暂停,以防程序运行过快,有时候计算机的速度过于快速,...
  • unity序列的播放方法

    千次阅读 2018-08-04 16:23:18
    2、新建个image 选中 然后在animation窗口上创建个新的animation samples播放多少张动画 用来控制动画速度,然后把图片拉上来 必须按这样的顺序 不然直接在Image上添加动画不行的...
  • setPreviewFrameRate在api level1就开始使用了,然后不是简单地设置这个方法就可以让摄像头每捕获多少帧数的。 比如我设置2,它一秒不会只捕获2数据的,从日志记录来看,相当糟糕,不会预期的2,于是我...
  • 【基本了解】 三者执行顺序:FixedUpdate ...我们知道,帧率低游戏会卡顿,具体解释下就是,每内看到的画面更新次数变少,少于个阈值,那么画面在人眼看来就是不连续的,也即卡顿的。 这是阈值是多少呢?人眼识别
  • podr是一个非常简单的软件包,其中包含两个功能,用于读取和清除Podcast Feed中的数据。 安装 devtools :: install_github( " erramirez/podr " ) 关键功能 podr主要由两个功能组成: 第个功能readpod将根据item...
  • obs推流延时3左右

    2021-01-05 04:22:50
    请置0(第个播放者可以开,且不花屏) <h1>hls协议是否按需生成,如果hls.segNum配置为0(意味着hls录制),那么hls将一直生成(不管此开关) <p>hls_demand=0 <h1>rtsp[s]协议是否按需生成 <p>...
  • Cocos2d-x 屏幕左下三行的意思

    千次阅读 2013-06-28 13:57:31
    中间一行渲染每一帧需要的时间。3.最下行就是大家熟悉的FPS。FPS图像领域中的一个术语。 FPS(Frames Per Second):每传输帧数。 Frames Per Second更确切的解释“每中填充图像的帧数(帧/)”。FPS...
  • 在电影中,使用记录许多照片或,每的照相机创建这种错觉。 当播放的投影仪时,观众看到的运动的图片。 在计算机上的动画与此类似。 例如,可使矩形淡出视野之外的绘图程序可能会起作用,如下所示。 ...
  • 此处可以做一些处理,来决定暂停一帧还是暂停多少秒 (2)当MoveNext返回False时该迭代模块会结束。 实现代码如下: 1.当我们在Unity中随便写个协程方法比如:yield return myTest() 和yield return null 效果一样...
  • Android UI优化小结

    2017-05-12 14:39:51
    我们来看一下,一帧需要处理多少数据。 我手头有个1920x1080的pad,60帧的情况下,一秒的像素量就是 1920x1080x60。 设置个1920x1080的背景, 转换成内存 Bitmap.Config ARGB_4444:每个像素占四位,即
  • 22、第四章介质访问控制子层习题及答案

    万次阅读 多人点赞 2019-01-16 21:10:40
    对于下列每一种帧到达率,试问平均一帧的延迟是多少(包括排队时间和传输时间)?(1)90帧/(2)900帧/(3)9000帧/ 2、N个站共享一个56kbps的纯ALOHA信道。每个站平均每100输出一个1000位长的帧,即使...
  • UWA渲染篇_概念(

    2019-04-28 21:14:49
    FPS:流畅度说明,通常情况下是多少帧/s的数值。关于获取这个数值有些坑,通常来说通过ADB来获取游戏的运行时FPS是不准确的,而且很难不影响游戏的性能开销,推荐种做法是在updata里做个计时器,为周期。输出每...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 190
精华内容 76
关键字:

一帧是多少秒