OpenCV中关于cvGetCaptureProperty函数
来源:互联网 发布:南京mac专柜价格 编辑:程序博客网 时间:2024/06/13 04:23
OpenCV中关于cvGetCaptureProperty函数
OpenCV中提供了一个函数cvGetCaptureProperty(Capture* cap,int property_index)函数来获取视频文件的一些属性,这是其中的OpenCV中属性的一些宏定义:
#define CV_CAP_PROP_POS_MSEC
#define CV_CAP_PROP_POS_FRAMES
#define CV_CAP_PROP_POS_AVI_RATIO
#define CV_CAP_PROP_FRAME_WIDTH
#define CV_CAP_PROP_FRAME_HEIGHT
#define CV_CAP_PROP_FPS
#define CV_CAP_PROP_FOURCC
#define CV_CAP_PROP_FRAME_COUNT
#define CV_CAP_PROP_FORMAT
#define CV_CAP_PROP_MODE
#define CV_CAP_PROP_BRIGHTNESS
#define CV_CAP_PROP_CONTRAST
#define CV_CAP_PROP_SATURATION
#define CV_CAP_PROP_HUE
#define CV_CAP_PROP_GAIN
#define CV_CAP_PROP_EXPOSURE
#define CV_CAP_PROP_CONVERT_RGB
#define CV_CAP_PROP_WHITE_BALANCE 17
#define CV_CAP_PROP_RECTIFICATION 18
通过创建一个Capture对象的指针后,调用cvGetCaptureProperty即可获取上述任何相关属性;但是我们不能太依赖这个函数;比如我们想获取一段视频的帧数,我们就不能太依赖于CV_CAP_PROP_FRAME_COUNT这个属性;因为cvGetCaptureProperty对属性的访问,其实访问的是关联视频文件的文件头信息,并不是真正去访问了视频的图像数据,这就带来一个问题:我们在讲其他视频格式转换为AVI格式的时候,图像帧数并没改变,只是视频文件头改变了,这时直接通过get函数读取的信息就可能不准确;最好的办法是迭代从视频中取出一帧,检查是否有数据,来确定该视频文件的总共帧数~~~
不光是帧数,帧率也可能不对~~
比如,自己在实验中庸狸窝转换器将一段视频转换为avi格式的视频文件后,用下面的两段代码,结果差距很大:
code 1.
CvCapture *cap = cvCaptureFromFile(videoName);//获取视频
int numFrames = (int) cvGetCaptureProperty(cap,
CODE 2.
IplImage* pImg=NULL;
int count=0;
while((pImg=cvQueryFrame(cap))!=NULL)
{
}//得到的帧数只有60帧;
究其原因其实就是cvGetCaptureProperty实现的机制上,它只是读取视频文件头信息,而不是真正读取了视频文件;因此在进行不同格式的视频文件转换为OpenCV支持的AVI时,可能获取的属性并不准确~~~
因此在使用该函数时,要注意。自己的经验是对于原始的AVI文件,可以直接使用该函数(code1),而经过转换而得到的视频文件,最好使用code 2。。
其实最希望的是OpenCV能够支持更多的视频格!
- OpenCV中关于cvGetCaptureProperty函数
- OpenCV中关于cvGetCaptureProperty函数
- OpenCV中关于cvGetCaptureProperty函数
- cvGetCaptureProperty函数
- 【OpenCV学习笔记】【函数学习】三(cvGetCaptureProperty函数)
- cvGetCaptureProperty
- opencv中关于直方图的相关函数
- opencv中关于cvNorm函数的使用
- opencv中关于直方图的相关函数
- opencv中关于cvNorm函数的使用
- 关于Opencv中Rect和Rectangle函数
- opencv 中关于图形显示的函数
- 关于Opencv中Rect和Rectangle函数
- 关于OpenCV中矩阵调用自带函数的问题
- 关于opencv 中cvCreateVideoWriter函数返回NULL情况的总结
- 关于OpenCV中rectangle函数的使用+统计直方图
- 关于Opencv中imread函数读不到图片的解决
- Episode Five:opencv中关于Homography()函数的应用
- 微信公众号开发者申请,Token验证(asp.net)
- Hibernate原理
- HDU 1180 诡异的楼梯(BFS:时间动态图)
- Scripts:从AWR中找到SQL执行相关的东西(弄懂脚本再用哦)find_sql_awr.sql
- week 14 lianxi
- OpenCV中关于cvGetCaptureProperty函数
- UDP端口绑定
- Maven 核心概念——插件和目标
- Linux下编译mongodb以及C++客户端驱动
- Ajax XMLHttpRequest对象 取得返回值
- c2java 回溯,下一个排列和子集和
- Maven 核心概念——生命周期
- next_permutation(自动全排列)
- php Laravel 框架之分页