
VideoReader用法:
由命令help VideoReader,得
OBJ = VideoReader(FILENAME) constructs a multimedia reader object, OBJ, that can read in video data from a multimedia file
FILENAME is a string specifying the name of a multimedia file
There are no restrictions on file extensions
By default, MATLAB looks for the file FILENAME on the MATLAB path
该语句将视频文件读到OBJ结构,FILENAME为文件路径,可为绝对路径,默认路径为工程目录。
Matlab:视频读取和帧保存
VideoReader参数:
obj结构体:
obj = VideoReader('D://Media//111mp4');%输入视频位置
Name –视频文件名
Path – 视频文件路径
Duration – 视频的总时长(多少秒)
FrameRate –视频帧速(帧/秒)
NumberOfFrames – 视频的总帧数
Height – 视频帧的高度
Width – 视频帧的宽度
BitsPerPixel – 视频帧每个像素的数据长度(比特)
VideoFormat – 视频的类型, 如 ‘RGB24’
Tag – 视频对象的标识符,默认为空字符串”
Type – 视频对象的类名,默认为’VideoReader’
示例:
obj_numberofframe = objNumberOfFrame;%读取总的帧数
obj_height = objHeight;%读取视频帧高度
Matlab:视频读取和帧保存
read - 帧读取
frame = read(obj),%获取该视频对象的所有帧
frame = read(obj, index),%获取该视频对象的指定帧
frame = read(obj, 1); % first frame only 获取第一帧
frame = read(obj, [1 10]); % first 10 frames 获取前10帧
frame = read(obj, Inf); % last frame only 获取最后一帧
frame = read(obj, [50 Inf]); % frame 50 thru end 获取第50帧之后
Matlab:视频读取和帧保存
imwrite-帧保存
由命令help imwrite ,得
imwrite(A,FILENAME,FMT) writes the image A to the file specified by FILENAME in the format specified by FMT
示例:
imwrite(frame,strcat('D:\image\cankao1\1jpg'),'jpg');% 保存帧
%%%frame为待保存的某一帧
%%%strcat('D:\image\cankao1\1jpg')为保存目录
%%%'jpg'为保存格式
Matlab:视频读取和帧保存
视频读取和帧保存程序:
obj = VideoReader('outavi');%输入视频位置
numFrames = objNumberOfFrames;% 帧的总数
for k = 1 : 15% 读取前15帧
frame = read(obj,k);%读取第几帧
imshow(frame);%显示帧
imwrite(frame,strcat('im',num2str(k),'jpg'),'jpg');% 保存帧
end
Matlab:视频读取和帧保存
注意事项
有时在使用VideoReader读取视频时,matlab会报错:
matlab报错:
错误使用 VideoReader/init (line 619)
无法确定所需的编解码器。
出错 VideoReader (line 172)
objinit(fileName);
解决方法:下载完美转码者或格式工厂,将原视频进行转码,则报错消失。
Matlab:视频读取和帧保存
Matlab:视频读取和帧保存
查看视频的某项参数的意思吧?
可以用软件MediaInfo查看,举个例子:
概要
ID : 0 (0x0)
完整名称 : C:\TDDOWNLOAD\[LG蓝光演示片断]LGSuperMultiBlueDemoBlu-rayREMUX1080PVC-1LPCMDD51Clip4-SiLUts
文件格式 : MPEG-TS
文件大小 : 565 MB
长度 : 2分 24秒
平均混合码率 : 328 Mbps
视频
ID : 4129 (0x1021)
菜单ID : 1 (0x1)
文件格式 : VC-1
格式简介 : AP@L3
编码设置ID : 234
长度 : 2分 23秒
码率 : 236 Mbps
画面宽度 : 1 920像素
画面高度 : 1 080像素
画面比例 : 16:9
帧率 : 23976 fps
色度抽样 : 4:2:0
位深度 : 8位
扫描方式 : 逐行扫描
压缩模式 : 有损压缩
bits/(pixelframe)(数据密度) : 0474
大小 : 404 MB (71%)
音频 #1
ID : 4133 (0x1025)
菜单ID : 1 (0x1)
文件格式 : AC-3
文件格式/信息 : Audio Coding 3
扩展模式 : CM (complete main)
编码设置ID : 129
长度 : 2分 23秒
码率模式 : CBR
码率 : 640 Kbps
声道 : 6声道
声道位置 : Front: L C R, Side: L R, LFE
采样率 : 480 KHz
位深度 : 16位
压缩模式 : 有损压缩
大小 : 110 MB (2%)
语言 : English
音频 #2
ID : 4135 (0x1027)
菜单ID : 1 (0x1)
文件格式 : PCM
格式设置, Endianness : Big
格式设置, Sign : Signed
混合模式 : Blu-ray
编码设置ID : 128
长度 : 2分 23秒
码率模式 : CBR
码率 : 6 912 Kbps
声道 : 6声道
声道位置 : Front: L C R, Side: L R, LFE
采样率 : 480 KHz
位深度 : 24位
大小 : 119 MB (21%)
语言 : English
里面的“帧率”就是你要的那个数据
----------------------------------------------------------------------------------------------------------------------------
格式工厂的“多媒体文件信息”功能也可以 但是是英文的,“Frame Rate”那一项即是
参考代码如下:
import
cv2
vc
=
cv2VideoCapture('Testavi')
#读入视频文件
c=1
if
vcisOpened():
#判断是否正常打开
rval
,
frame
=
vcread()
else:
rval
=
False
timeF
=
1000
#视频帧计数间隔频率
while
rval:
#循环读取视频帧
rval,
frame
=
vcread()
if(c%timeF
==
0):
#每隔timeF帧进行存储 *** 作
cv2imwrite('image/'+str(c)
+
'jpg',frame)
#存储为图像
c
=
c
+
1
cv2waitKey(1)
vcrelease()
以上就是关于老版本的matlab7上如何读取视频帧全部的内容,包括:老版本的matlab7上如何读取视频帧、什么软件可以提取视频帧数、如何用python实现视频关键帧提取并保存为图片等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)