首页 > 编程知识 正文

opencv读取视频,c哩舞蹈教程视频分解

时间:2023-05-03 20:10:33 阅读:47118 作者:386

直接调用目录视频数据的读取摄像机

导入视频数据

视频文件由多个图像组成,但imread ) )函数不能直接导入视频文件。 必须使用专用的视频导入函数进行视频导入,并将每帧的图像保存到Mat类矩阵中。 下面的代码演示了导入视频文件时视频捕获类的工作方式。

cv :视频捕获:3360视频捕获(; //默认构造函数cv :3360视频捕获:3360视频捕获(conststringfilename, int apiPreference=CAP_ANY ) filename )读取的视频文件或此函数构成可以读取和处理视频文件的视频流,代码清单2-27的第一行是video cacaname 但是,声明可以读取视频数据的类,具体读取哪个视频文件,必须在使用时使用open (函数指定)。 例如,cap.open )“1.avi”是vidi

第二个构造函数在提供声明变量的同时将视频数据分配给该变量。 可以导入的文件类型包括视频文件(例如video.avi )、图像序列或视频流的URL。 要导入其中的图像序列,必须将多个图像的名称统一为“前缀编号”格式,并以“前缀d”格式调用。 例如,如果某个文件夹中有图像img_00.jpg、img_01.jpg、img_02.jpg……,则文件名以img_d.jpg表示。 函数中的读取视频设置属性标签默认情况下会自动搜索相应的标志,因此在正常使用中,您只需输入视频名称即可将其设置为默认设置。 imread ) )函数一样,构造函数也可能导致文件读取失败,因此必须由isOpened ) )函数来确定。 如果读取成功,则返回值为true,如果读取失败,则返回值为false。

如果您只是使用构造函数将视频文件加载到VideoCapture类变量中,但需要使用视频中的图像,请按视频顺序将图像从VideoCapture类变量导出到Mat类变量,以用于后期数据处理在此操作中,可以使用运算符“”按视频顺序将图像从VideoCapture类变量复制到Mat类变量中。 VideoCapture类变量中的所有图像都分配给Mat类变量后,重新分配时Mat类变量将变为空矩阵,因此empty是否加载了VideoCapture类变量中的所有图像

VideoCapture类变量还提供了get (函数),可以显示视频的属性。 通过输入指定的标志,获取视频属性,如视频的像素大小、帧数和帧速率。 一般标志和含义见表2-5。

# include iostream//# include stdio.h # include opencv2/opencv.HPP # include ' opencv/highgui.h ' usingnamespacestd ui . intmain(intargc,char** argv ) cout ' opencv version : ' cv _ version endl; videocapturevideo ()/home/wyh/documents/c demo/project _ video.MP4 ); if (视频. is opened () ({ cout )视频中的图像宽度='视频. get ) cap_prop_frame_width ) endl; cout '视频图像高度=' video.get (cap _ prop _ frame _ height ) endl; cout '视频帧速率='video.get(cap_prop_fps ) endl; cout '视频的总帧数=' video.get (cap _ prop _ frame _ count ) endl; 请确认} else{ cout视频文件名是否正确' endl; 返回- 1; }while(1) { Mat frame; 视频帧if (frame.empty () ) { break; } im show (视频)、帧; wait key (1000 /视频. get ) cap_prop_fps ); }等待密钥(; 返回0; }

如果直接调用的VideoCapture类,也可以调用摄像机,如代码清单2-29所示。

与导入视频文件相比,cv :3360视频捕获33603360视频捕获(intindex,int apiPreference=CAP_ANY )调用相机是第一个参数化相机调用相机时,第一个参数是要打开的相机设备的ID,ID命名方法从0开始。 从相机读取图像数据的方式与从视频读取图像数据的方式相同,用“”符号读取当前相机拍摄的图像。 也可以在导入视频时使用VideoCapture类所具有的属性。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。