精华内容
下载资源
问答
  • 看到其他人的目标检测有提到检测速度达到每秒多少帧,,这个是怎么来的 ,有没有相关代码推荐?我想测试一下自己训练的模型
  • 视频多少帧时才不卡顿

    千次阅读 2019-07-03 20:16:11
    数字电影及你所说的视频是由一序列静止画面组成的,这些静止的画面称为。一般来说,帧率低于15/秒,连续的运动视频就会有停顿的感觉。我国采用的是电视标准PAL制,它规定视频每秒25(隔行扫描方式),每625...

    数字电影及你所说的视频是由一序列静止画面组成的,这些静止的画面称为帧。一般来说,帧率低于15帧/秒,连续的运动视频就会有停顿的感觉。我国采用的是电视标准PAL制,它规定视频每秒25帧(隔行扫描方式),每帧625个扫描行。
    帧数越多数据量越大,所以有时为了减少数据量而减慢了帧速,例如只有16帧/秒,可达到一定的满意程度,但效果略差。一般我们在制作时都会根据应用范围来确定帧数,以下是一些国际标准:
    视频类型 帧速率/fps
    电影 24
    PAL和SECAM视频 25
    NTSC视频 29.97
    Web或CD-ROM 15
    其他视频类型,非丢帧视频,E-D动画 30

    展开全文
  • 我不需要知道你有多少帧之动画创建辅助类 今天心情不好,所以我可能会比平时唠叨。 (小若:你心情不好,那为毛要连累我们!)   OK,今天不是写教程,只是想给大家分享一下简单的心得。想必大家都觉得...

    我不需要知道你有多少帧之动画创建辅助类

    今天心情不好,所以我可能会比平时唠叨。

    (小若:你心情不好,那为毛要连累我们!)

     

    OK,今天不是写教程,只是想给大家分享一下简单的心得。想必大家都觉得Cocos2d-x要创建一个CCAnimation还是有点繁琐的,是的,通常我们都会创建一个辅助类,这样就可以说省去重复的工作了。

    (小若:快点进入正题,我也没有心情吐槽。)

     

     

    笨木头花心贡献,啥?花心?不呢,是用心~

    转载请注明,原文地址
    http://blog.csdn.net/musicvs/article/details/8567220

     

    正文:

     

     

    比如,我们通常会看到这样的辅助类:

    CCAnimation* AnimationUtil::createAnimationWithSingleName( const char* singleName, int iFrameNum ) {
    	CCSpriteFrameCache* spriteFrameCache = CCSpriteFrameCache::sharedSpriteFrameCache();
    
    	CCSpriteFrame* frame = NULL;
    
    	CCArray* frameArray = CCArray::create();
    	for(int i = 1; i <= iFrameNum; i++)
    	{
    		frame = spriteFrameCache->spriteFrameByName(
    			CCString::createWithFormat("%s%d.png", singleName, i)->getCString());
    
    		frameArray->addObject(frame);
    
    	} 
    
    	return CCAnimation::createWithSpriteFrames(frameArray);
    }

    当然了,我默认动作图片都是用TexturePacker打包过的,这不在本文的讨论范围内。

    (小若:我不懂,难道我还会告诉你?)

     

    这是我们用到的图片资源:

     

    这是图片对应的配置文件,大家可以双击打开看看:

     

    (小若:啊!看你妹纸啊!怎么双击啊,你击给我看啊!明明是图片啊好不好!)

    由于hero1.plist文件太长了,我就不贴出来了,大家自己随便弄一个动作资源吧。

    (小若:你今天的心情是有多不好。。。)

     

    然后试试使用这个函数:

    CCAnimation* heroAnim = AnimationUtil::sharedAnimationUtil()->createAnimationWithSingleName("hero1_atk", 6);
    	heroAnim->setLoops(-1);
    	heroAnim->setDelayPerUnit(0.1f);
    
    	sprite->runAction(CCAnimate::create(heroAnim));


     

    挺简单的,挺好的,指定了图片资源的名称,指定了图片资源的帧数,然后createAnimationWithSingleName就会创建好CCAnimation对象。这个方法在百度一搜,也能搜到不少。

    这是一个很不错的方法,只需用一句话就能创建一个动画对象,很好,那么,本次教程就到此结束了。

    (小若:总感觉有什么不对劲。。。。不对啊!你不是要告诉我们更好的方法吗?!)

     

     

    不过,有个更方便的方法:

    CCAnimation* AnimationUtil::createAnimationWithSingleName( const char* singleName ) {
    	CCSpriteFrameCache* spriteFrameCache = CCSpriteFrameCache::sharedSpriteFrameCache();
    
    	int index = 1;
    	CCSpriteFrame* frame = NULL;
    
    	CCArray* frameArray = CCArray::create();
    	do 
    	{
    		frame = spriteFrameCache->spriteFrameByName(
    			CCString::createWithFormat("%s%d.png", singleName, index)->getCString());
    
    		if(frame == NULL) {
    			break;
    		}
    
    		frameArray->addObject(frame);
    		index++;
    
    	} while (true);
    
    	return CCAnimation::createWithSpriteFrames(frameArray);
    }


     

    和之前的方法唯一的区别就是:

    1. For循环换成了do while循环

    2. 不需要指定帧数

    (小若:唯一的区别竟然有两点。。。唯一。。。唯一是这样的吗!唯一那就应该只有一点啊!)

     

     

    这个函数会根据指定的资源名称一直加载图片帧,直到遇到空值为止,虽然这有点投机取巧的味道,但是可以省去一件很麻烦的事情,那就是:指定动画的帧数。

    我们把图片用TexturePacker打包好之后,不可能每次加载一个动画,就打开pilist文件去看看这个动画有多少帧吧?反正我是觉得这样好麻烦,所以就想出这个投机的方法。

    仅供参考~

    好了,其实我不太想发表这篇文章的,我也知道写得不好(心情实在糟糕,抱歉),但是我怕改天忘了,所以还是写了。

    (小若:就算你这么说,我也不会原谅你的!)


     

    展开全文
  • I P B

    2015-03-17 15:13:39
    MPEG编码将画面(即)分为I、P、B三种,I是内部编码,P是前向预测,B是双向内插。简单地讲,I是一个完整的画面,而P和B记录的是相对于I的变化。没有I,P和B就无法解码,这就是MPEG格式难以...

    画面组

    MPEG编码将画面(即帧)分为I、P、B三种,I是内部编码帧,P是前向预测帧,B是双向内插帧。简单地讲,I帧是一个完整的画面,而P帧和B帧记录的是相对于I帧的变化。没有I帧,P帧和B帧就无法解码,这就是MPEG格式难以精确剪辑的原因,也是我们之所以要微调头和尾的原因。
    MPEG-2 帧结构
    MPEG-2压缩的帧结构有两个参数,一个是GOP(Group Of Picture)图像组的长度,一般可按编码方式从1-15;另一个是I帧和P帧之间B帧的数量,一般是1-2个。前者在理论上记录为N,即多少帧里面出现一次I帧;后者描述为多少帧里出现一次P帧,记录为M。

    I帧图像采用帧内编码方式,即只利用了单帧图像内的空间相关性,而没有利用时间相关性。I帧主要用于接收机的初始化和信道的获取,以及节目的切换和插入,I帧图像的压缩倍数相对较低。I帧图像是周期性出现在图像序列中的,出现频率可由编码器选择。

    P帧和B帧图像采用帧间编码方式,即同时利用了空间和时间上的相关性。P帧图像只采用前向时间预测,可以提高压缩效率和图像质量。P帧图像中可以包含帧内编码的部分,即P帧中的每一个宏块可以是前向预测,也可以是帧内编码。B帧图像采用双向时间预测,可以大大提高压缩倍数。值得注意的是,由于B帧图像采用了未来帧作为参考,因此MPEG-2编码码流中图像帧的传输顺序和显示顺序是不同的。

    展开全文
  • I、P、B 关键详解

    千次阅读 2019-11-30 20:29:33
    视频压缩中,每代表一幅静止的图像。而在实际压缩时,会采取各种算法减少数据的容量,其中IPB就是最常见的。 简单地说,I是关键,属于内压缩。就是和AVI的压缩是一样的。P是向前搜索的意思。B是双向搜索。...

         视频压缩中,每帧代表一幅静止的图像。而在实际压缩时,会采取各种算法减少数据的容量,其中IPB就是最常见的。

         简单地说,I帧是关键帧,属于帧内压缩。就是和AVI的压缩是一样的。P是向前搜索的意思。B是双向搜索。他们都是基于I帧来压缩数据。

       I帧表示关键帧,你可以理解为这一帧画面的完整保留;解码时只需要本帧数据就可以完成(因为包含完整画面)

       P帧表示的是这一帧跟之前的一个关键帧(或P帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。(也就是差别帧,P帧没有完整画面数据,只有与前一帧的画面差别的数据)

       B帧是双向差别帧,也就是B帧记录的是本帧与前后帧的差别(具体比较复杂,有4种情况),换言之,要解码B帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面。B帧压缩率高,但是解码时CPU会比较累~。

        采用的压缩方法: 分组:把几帧图像分为一组(GOP),为防止运动变化,帧数不宜取多。

            1.定义帧:将每组内各帧图像定义为三种类型,即I帧、B帧和P帧;

            2.预测帧:以I帧做为基础帧,以I帧预测P帧,再由I帧和P帧预测B帧;

            3.数据传输:最后将I帧数据与预测的差值信息进行存储和传输。

    一、I帧  

        I图像(帧)是靠尽可能去除图像空间冗余信息来压缩传输数据量的帧内编码图像。

        I帧又称为内部画面 (intra picture),I 帧通常是每个 GOP(MPEG 所使用的一种视频压缩技术)的第一个帧,经过适度地压缩(做为随机访问的参考点)可以当成图象。在MPEG编码的过程中部分视频帧序列压缩成为I帧,部分压缩成P帧,还有部分压缩成B帧。I帧法是帧内压缩法(P、B为帧间),也称为“关键帧”压缩法。I帧法是基于离散余弦变换DCT(Discrete Cosine Transform)的压缩技术,这种算法与JPEG压缩算法类似。采用I帧压缩可达到1/6的压缩比而无明显的压缩痕迹。

        I帧特点

            1.它是一个全帧压缩编码帧。它将全帧图像信息进行JPEG压缩编码及传输;

            2.解码时仅用I帧的数据就可重构完整图像;

            3.I帧描述了图像背景和运动主体的详情;

            4.I帧不需要参考其他画面而生成;

            5.I帧是P帧和B帧的参考帧(其质量直接影响到同组中以后各帧的质量);

            6.I帧是帧组GOP的基础帧(第一帧),在一组中只有一个I帧;

            7.I帧不需要考虑运动矢量;

           8.I帧所占数据的信息量比较大。

        I帧编码流程:

            (1)进行帧内预测,决定所采用的帧内预测模式。

            (2)像素值减去预测值,得到残差。

            (3)对残差进行变换和量化。

            (4)变长编码和算术编码。

            (5)重构图像并滤波,得到的图像作为其它帧的参考帧。

     

    二、P帧

         P图像(帧)是通过充分降低于图像序列中前面已编码帧的时间冗余信息来压缩传输数据量的编码图像,也叫预测帧

        在针对连续动态图像编码时,将连续若干幅图像分成P,B,I三种类型,P帧由在它前面的P帧或者I帧预测而来,它比较与它前面的P帧或者I帧之间的相同信息或数据,也即考虑运动的特性进行帧间压缩。P帧法是根据本帧与相邻的前一帧(I帧或P帧)的不同点来压缩本帧数据。采取P帧和I帧联合压缩的方法可达到更高的压缩且无明显的压缩痕迹。

        P帧的预测与重构:

            P帧是以I帧为参考帧,在I帧中找出P帧“某点”的预测值和运动矢量,取预测差值和运动矢量一起传送。在接收端根据运动矢量从I帧中找出P帧“某点”的预测值并与差值相加以得到P帧“某点”样值,从而可得到完整的P帧。

        P帧特点:

            ①P帧是I帧后面相隔1-2帧的编码帧。  

            ②P帧采用运动补偿的方法传送它与前面的I或P帧的差值及运动矢量(预测误差)。  

            ③解码时必须将I帧中的预测值与预测误差求和后才能重构完整的P帧图像。  

            ④P帧属于前向预测的帧间编码。它只参考前面最靠近它的I帧或P帧。  

            ⑤P帧可以是其后面P帧的参考帧,也可以是其前后的B帧的参考帧。

            ⑥由于P帧是参考帧,它可能造成解码错误的扩散。 

            ⑦由于是差值传送,P帧的压缩比较高。

     三、B帧

        B图像(帧)是既考虑与源图像序列前面已编码帧,也顾及源图像序列后面已编码帧之间的时间冗余信息来压缩传输数据量的编码图像,也叫双向预测帧。   

        B帧法是双向预测的帧间压缩算法。当把一帧压缩成B帧时,它根据相邻的前一帧、本帧以及后一帧数据的不同点来压缩本帧,也即仅记录本帧与前后帧的差值。只有采用B帧压缩才能达到200:1的高压缩。一般地,I帧压缩效率最低,P帧较高,B帧最高。

        B帧的预测与重构:

            B帧以前面的I或P帧和后面的P帧为参考帧,“找出”B帧“某点”的预测值和两个运动矢量,并取预测差值和运动矢量传送。接收端根据运动矢量在两个参考帧中“找出(算出)”预测值并与差值求和,得到B帧“某点”样值,从而可得到完整的B帧。

        B帧特点:

            1.B帧是由前面的I或P帧和后面的P帧来进行预测的;

            2.B帧传送的是它与前面的I或P帧和后面的P帧之间的预测误差及运动矢量;

            3.B帧是双向预测编码帧;

            4.B帧压缩比最高,因为它只反映2参考帧间运动主体的变化情况,预测比较准确;

            5.B帧不是参考帧,不会造成解码错误的扩散。 

        P 帧和 B 帧编码的基本流程为:

            (1)进行运动估计,计算采用帧间编码模式的率失真函数(节)值。P 帧 只参考前面的帧,B 帧可参考后面的帧。

            (2)进行帧内预测,选取率失真函数值最小的帧内模式与帧间模式比较,确定采用哪种编码模式。

            (3)计算实际值和预测值的差值。

            (4)对残差进行变换和量化。

            (5)若编码,如果是帧间编码模式,编码运动矢量。

        注:I、B、P各帧是根据压缩算法的需要,是人为定义的,它们都是实实在在的物理帧,至于图像中的哪一帧是I帧,是随机的,一但确定了I帧,以后的各帧就严格按规定顺序排列。 

    四、实际应用

        从上面的解释看,我们知道I和P的解码算法比较简单,资源占用也比较少,I只要自己完成就行了,P呢,也只需要解码器把前一个画面缓存一下,遇到P时就使用之前缓存的画面就好了,如果视频流只有I和P,解码器可以不管后面的数据,边读边解码,线性前进,大家很舒服。

        但网络上的电影很多都采用了B帧,因为B帧记录的是前后帧的差别,比P帧能节约更多的空间,但这样一来,文件小了,解码器就麻烦了,因为在解码时,不仅要用之前缓存的画面,还要知道下一个I或者P的画面(也就是说要预读预解码),而且,B帧不能简单地丢掉,因为B帧其实也包含了画面信息,如果简单丢掉,并用之前的画面简单重复,就会造成画面卡(其实就是丢帧了),并且由于网络上的电影为了节约空间,往往使用相当多的B帧,B帧用的多,对不支持B帧的播放器就造成更大的困扰,画面也就越卡。

        一般平均来说,I的压缩率是7(跟JPG差不多),P是20,B可以达到50,可见使用B帧能节省大量空间,节省出来的空间可以用来保存多一些I帧,这样在相同码率下,可以提供更好的画质。

    https://img-my.csdn.net/uploads/201303/30/1364622776_7342.jpg

       在如上图中,GOP (Group of Pictures)长度为13,S0~S7 表示 8个视点,T0~T12 为 GOP的 13个时刻。每个 GOP包含帧数为视点数 GOP 长度的乘积。在该图中一个 GOP 中,包含94 个 B帧。B 帧占一个 GOP 总帧数的 90.38%。GOP 越长,B 帧所占比例更高,编码的率失真性能越高。下图测试序列 Race1 在不同 GOP 下的率失真性能对比。

    https://img-my.csdn.net/uploads/201303/30/1364622864_6562.jpg

    展开全文
  • video.FrameRate是视频每秒多少帧图片。你如果想要60秒提取一帧的话,那么 60*FrameRate 设定为循环的步长就可以提取了。 clc; clear; %% 读取视频 video_file='C:\Users\49786\Desktop\Fog20200313000026.mp4'; ...
  •  I:内编码是一种自带全部信息的独立,无需参考其它图像便可独立进行解码,视频序列中的第一个始终都是I。 I和IDR都是使用内预测的。它们都是同一个东西而已,在编码和解码中为了方便,要首个I和...
  • I、B、P、IDR,GOP相关

    千次阅读 2017-03-29 22:28:00
    I ( intra frame )内编码  I 通常是每个 GOP的第一个,自带全部信息的独立。经过适度地压缩,做为随机访问的参考点,可以当成图象。I可以看成是一个图像经过压缩后的产物。 IDR(Instantaneous ...
  • 今天遇到一个问题,需要计算一下CAN总线上,不同的波特率下,每秒钟最多能够传输多少帧数据,或者说,每帧数据需要耗时多少时间。一开始以为这个东西是很基础的确定性数据,百度上应该随便就能查得到,可是查了半天...
  • 80211格式--管理、数据、控制 因为无线数据链路所带来的挑战,MAC被迫采用了许多特殊的功能,其中包括使用四个地址位。并非每个都会用到所有的地址位,这些地址位的值,也会因为MAC种类的不同而有所...
  • 无限 时隙

    2019-02-18 13:05:00
    无限 1.三个层次 无限->子->时隙 2.无限是LTE时间结构的最大单位,时长10ms 3.无限编号:0~1023(1024制式) 子 1.一个无限由10个子组成,每个子为1ms,编号为0~9 2.一个子的时...
  • mpeg4(MP4)文件中的每一开始都是固定的:00 00 01 b6,那么在接下来的每一分别是什么呢(I、B、P)?一般在这固定的后面2bit就是标志是什么的。  I:00 B:01  C:10  下面举例说明: ...
  • 图像处理速计算

    千次阅读 2012-12-30 01:21:25
    处理速度的快慢比较简明的判断方法就是帧速,1s可以处理多少帧图片. 计算的算法和游戏帧数计算一样,累加一个时间片段中处理了多少帧,算出1s内可以处理多少帧。 一般时间片段设为0.1s, 1个时间片段结束后,清0,...
  • 什么是B、I和P?B、I和P是什么意思? I 对此画面的内容进行完整压缩,只有此的数据完全记载此画面的内容。此类似于JPEG。   P 与其前面的I的比较差分, P只记录了差分信息。相对于...
  • 有关uds的多传输

    千次阅读 2019-01-06 22:43:41
    建立连接后,client首先发送首帧,告诉服务器,要发送的数据数量,然后服务器会返回一个流控制帧,告诉客户端,是否可以连续发送数据帧(连续帧),如果可以连续那么可以连着发多少帧,以及每两帧之间的最小时间间隔...
  • 利用opencv将视频转为图像

    千次阅读 2018-12-10 20:45:18
    本文做的是基于opencv将视频帧转成图片输出,由于一个视频包含的帧数过多,经常我们并不是需要它的全部帧转成图片,因此我们希望可以设置每隔多少帧再转一次图片(本文设置为5帧),若有人需求是只需要前多少帧,也...
  • 以太网最小长与最大

    万次阅读 多人点赞 2016-11-13 10:58:11
    以太网的开销是18字节,是“目的MAC(6)+源MAC(6)+Type(2)+CRC(4)”。以太网最小长为64字节,那么IP报文最小为46字节,而局域网规定IP最大传输单元1500字节,实际上加上以太网的18字节,就是1518...
  • 视频编解码IBP

    2018-03-02 10:21:23
    一、码率 、帧率以及分辨率帧率:FPS(每秒钟要多少帧画面);以及Gop(表示多少秒一个I帧)码率:编码器每秒变出多少数据大小,单位是kbps,比如800kbps代表编码器每秒产生800kb(或100KB)的数据分辨率:单位英寸所...
  • 大小与长度

    万次阅读 2018-03-06 16:33:59
    几乎所有视频编码格式都可以简单的认为一就是编码后的一副图像。而音频跟音频格式有关,由各个编码标准规定。如果以PCM(未经编码的音频数据)来说,它根本就不需要的概念,根据采样率和采样精度就可以播放了...
  • 什么是I,P,B

    2015-12-22 20:19:23
    视频压缩中,每代表一幅静止的图像。而在实际压缩时,会采取各种算法减少数据的容量,其中IPB就是最常见的。   简单地说,I是关键,属于内压缩。就是和AVI的压缩是一样的。 P是向前搜索的意思。B是双向...
  • 【opencv】基于opencv将视频转成图片输出

    万次阅读 多人点赞 2017-08-31 09:34:24
    本文做的是基于opencv将视频帧转成图片输出,由于一个视频包含的帧数过多,经常我们并不是需要它的全部帧转成图片,因此我们希望可以设置每隔多少帧再转一次图片(本文设置为30帧),若有人需求是只需要前多少帧,也...
  • I P B的区别

    千次阅读 2010-12-09 11:30:00
    2)因为B 位于前后画面的中间,以「前后画面的平均」,也就是「前后画面的中间值」来作为预测数值(预测 B 的 pixel 数值为多少?如果有误差,再记录差值),这样这个预测数值会比单独使用前一个画面...
  • %存第k帧 clc; clear; video_file='D:\pictures\5.mp4';%读取视频位置 obj=VideoReader(video_file);...%一共有多少帧 frame = read(obj,Inf);%获取最后一帧(frame = read(obj,k);%读取第k帧) imwrite(frame,strc...
  • 串口发送一数据时,两个字节的间隔时间是多少
  • 15/30/60的区别

    千次阅读 2017-01-06 13:10:48
    如今玩游戏,你可以忍受数低于平均数30的游戏吗?如果低于30,不仅卡顿,而且大大影响游戏感。曾用过CRT(就是那种又大又笨重的显示器,目前医疗行业依然使用)的用户对于刷新率应该不会陌生,一旦刷新率调...
  • CAN总线的标准和扩展

    千次阅读 2020-07-29 18:10:26
    CAN总线的标准和扩展主要决定ID的长度, 标准ID长度是11位,ID的范围是000-7FF。 扩展ID长度是29位,ID的范围是0000 0000-1FFF FFFF。CANopenID最多是11位的,因此是标准;而SAE 1939...
  • CAN格式(标准、拓展

    千次阅读 2018-07-07 14:19:00
    CAN2.0B标准 CAN 标准信息为11个字节,包括两部分:信息和数据部分。前3个字节为信息部分。 位置 7 6 5 4 3 2 1 0 字节01 FF RTR ...
  • 在视频压缩编码中,所有的被分成了三个种类,I,B和P,其实就是Intra-Prediction,Bi-prediction和Prediction。顾名思义,就是内预测,双向预测以及(单向)预测。每一,都是一张静止的图片...
  • HDLC

    千次阅读 热门讨论 2018-03-25 21:45:34
    我们一共碰到的有HDLC和MAC。 一看到这两种,就应该想到,它们都是在数据链路层中的。数据链路层分为两个子层,分别是LLC子层和MAC子层。LLC子层中有出现频率很高的IEEE802标准,而MAC就存在于MAC子层。 先...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 87,981
精华内容 35,192
关键字:

多少帧