从视频中获取帧图片
网络传输数据帧
数据以称为帧的小单元在网络上传输。框架由多个部分组成,不同的部分执行不同的功能。帧由称为网络驱动程序的特殊软件整形,然后通过网卡发送到网线,通过网线到达其目的机器,在目的机器的一端执行相反的过程。接收机器的以太网卡捕获这些帧,告诉操作系统该帧已到达,然后存储它。正是在这个发送和接收的过程中,嗅探器才会造成安全问题。
“帧”数据由两部分组成:帧头和帧数据。帧头包括接收主机的物理地址的位置和其他网络信息。帧数据区域包含数据主体。为了确保计算机能够解释数据帧中的数据,两台计算机使用通用的通信协议。互联网使用的通信协议简称IP,即网际协议。 IP数据体由两部分组成:数据体头和数据体数据区。数据体头包括IP源地址和IP目的地址以及其他信息。数据体的数据区包括用户数据协议(UDP)、传输控制协议(TCP)以及数据包的其他信息。这些数据包包含附加的过程信息以及实际数据。
视频图像帧
帧——是图像动画中单个图像的最小单位。一帧是静止图片,连续的帧形成动画,例如电视图像。一般来说,帧数,简单来说就是一秒钟传输的图片帧数。也可以理解为图形处理器每秒可以刷新多少次,通常用FPS(Frames Per Second)来表示。每一帧都是静止图像,快速连续显示帧会产生运动的错觉。高帧速率可以产生更流畅、更真实的动画。每秒帧数(fps) 越多,显示的动作就越流畅。
关键帧
—— 任何表达运动或变化的动画,至少必须给出前后两个不同的关键状态,并且中间状态的变化和连接可以由计算机自动完成。在Flash中,代表关键状态的帧称为关键帧。
过渡框架
—— 在两个关键帧之间,计算机自动完成过渡画面的帧称为过渡帧。
下面的例子是从视频中获取帧图片
无效视频2Image()
{
//视频捕获cap('1.avi');
VideoCapture cap('G:\CBU2_MiddleFrameDetection\imageData\捕获视频\10.21\矩形边\1.avi');
//获取视频总帧数
长totalFrameNumber=cap.get(CAP_PROP_FRAME_COUNT);
cout '总帧数:'totalFrameNumber endl;
垫架;
布尔标志=真;
长当前帧=0;
而(标志){
//读取视频的每一帧
cap.read(frame);
字符串流str;
str'a2'当前帧'.jpg';
cout '处理' currentFrame '帧' endl;
printf('');
//设置每30帧获取帧
if(当前帧%2==0)
{
//将帧转换成图片输出
imwrite('G:\CBU2_MiddleFrameDetection\imageData\拍摄视频\img10.21\2' + str.str(),frame);
}
//结束条件
if (当前帧=总帧数) {
标志=假;
}
当前帧++;
}
}
审稿人:李茜