首页 > 编程知识 正文

opencv视频截图(c++ opencv教程)

时间:2023-05-04 14:13:36 阅读:80590 作者:90

经过几个月的努力,单纯的外套终于完成了市场上第一本OpenCV 4入门书《从零学习OpenCV 4》。 为了让合作伙伴更快地知道最新版的OpenCV 4,单纯的外套会与出版社联系,在标题上连载部分内容,请继续关注单纯的外套。

01导入视频数据

视频文件由多个图像组成,但imread (函数不能直接导入视频文件。 必须使用专用的视频导入函数导入视频,并将每个帧图像保存在Mat类矩阵中。 导入视频文件时,VideoCapture类的工作方式如代码列表2-27所示。

代码清单2-27导入视频文件的视频捕获类构造函数

cv :视频捕获:视频捕获(; //默认构造函数

cv :视频捕获:视频捕获(一致性文件名,

int API首选项=大写字母

(文件名)导入的视频文件或图像序列名称

apiPreference :读取数据时设定的属性。 例如,编码格式、是否调用OpenNI等。 详细的参数和含义如表2-5所示。

此函数构建可以读取和处理视频文件的视频流,代码列表2-27的第一行是VideoCapture类的默认构造函数。 但是,声明可以读取视频数据的类,具体要读取哪些视频文件,在使用时必须使用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所示。

为了熟悉VideoCapture类,显示了在代码列表2-28中导入视频、输出视频属性、以原始帧速率显示视频的程序,执行结果如图2-6所示。

代码清单2-28导入视频捕获. CPP视频文件

# #包括opencv2(opencv.HPP

# #包含iostream

单一名称空间固态硬盘;

单一名称空间光碟;

int主() )

{

系统(颜色0 ); //更改输出接口的颜色

视频摄像头视频(cup.MP4 );

if (视频开放) )

{

cout '视频的图像宽度='视频. get (cap _ prop _ frame _ width )结束;

视频的图像高度='视频. get (cap _ prop _ frame _ height )结束符;

视频帧速率='视频. get (cap _ prop _ fps )结束符;

cout '视频的帧总数='视频. get (cap _ prop _ frame _ count );

}

else

{

cout '请确认视频文件名是否正确' endl;

返回- 1;

}

while(1) )。

{

最大框架;

视频帧

if (帧.空白) )

{

布莱克;

}

im show (视频)、帧);

等待密钥(1000 /视频.获取) cap_prop_fps;

}

waitKey (;

返回0;

(} )。

图2-6读取视频程序的运行结果

02直接调用摄像头

VideoCapture类还可以调用摄像头,如代码列表2-29所示。

代码清单2-29视频捕获类调用摄像机构造函数

cv :视频捕获:3360视频捕获(索引,

int API首选项=大写字母

通过与代码清单2-27进行比较,调用照相机与导入视频文件相比,只有第一个参数不同。 调用照相机时,第一个参数是要打开的照相机设备的ID,ID的命名方法从0开始。 从相机读取图像数据的方式与从视频读取图像数据的方式相同,是用“”符号读取当前相机拍摄的图像。 导入视频时,也可以使用VideoCapture类的属性。 将代码清单2-28的视频文件变更为照相机id(0),再次执行代码清单2-28的程序的结果如图2-7所示。

图2-7调出摄像头程序的执行结果

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