老版本的matlab7上如何读取视频帧

老版本的matlab7上如何读取视频帧,第1张

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实现视频关键帧提取并保存为图片等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9783232.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存