初学图像处理+opencv----读取视频
2017-02-25 10:39
453 查看
读取视频的前提,还需要安装解码器。刚开始我是有一定疑惑的,opencv中提供只可以读取avi格式视频的功能,为什么还需要安装解码器,感谢从ChenLee_l博客http://blog.csdn.net/carson2005/article/details/6979806,得到了解答。重点就是,尽管OpenCV提供了一些读写视频文件的API,但是,它也仅仅是一个接口而已,其内部,依然需要调用相应的视频编解码器的API来进行解码。
接下来我安装了xvid,然后运行代码。
代码和解读如下:
CvCapture 是一个结构体,用来保存图像捕获所需要的信息。 opencv提供两种方式从外部捕获图像,一种是从摄像头中,一种是通过解码视频得到图像。 两种方式都必须从第一帧开始一帧一帧的按顺序获取,因此每获取一帧后都要保存相应的状态和参数。比如从视频文件中获取,需要保存视频文件的文件名,相应的解码器类型,下一次如果要获取将需要解码哪一帧等。 这些信息都保存在CvCapture结构中,每获取一帧后,这些信息都将被更新,获取下一帧需要将新信息传给获取的api接口。
cvCreateFileCapture(char*name):通过输入要读取的avi文件的路径,然后,该函数返回一个指向CvCapture结构体的指针。
cvQueryFrame(capture):输入一个CvCapture类型的指针,该函数主要功能是将视频文件的下一帧加载到内存。与cvLoadImage的不同之处是,该函数不重新分配内存空间。
C=cvWaitKey(33):当前帧被显示后,等待33毫秒。如果用户触发了一个按键,c会被设置成这个按键的ASCII码,否则会被设置成-1。cvWaitKey(33)在此处的另外一个作用是,控制帧率。
cvReleaseCapture(&capture):释放为CvCapture结构体开辟的内存空间,关闭打开的AVI文件相关的文件句柄。
运行时我遇到一个问题,出现debug assertion failed,查找半天没找出问题,后来在狸猫里修改了转换avi的格式为avi auto video后,竟然奇迹的成功运行。
接下来我安装了xvid,然后运行代码。
代码和解读如下:
#include "highgui.h" int main(int argc, char* argv[]) { cvNamedWindow("avi"); CvCapture* capture = cvCreateFileCapture(“视频文件路径"); IplImage* frame; while(1) { frame = cvQueryFrame(capture); if(!frame)break; cvShowImage("avi",frame); char c = cvWaitKey(33); if(c==27)//esc ascII值 break; } cvReleaseCapture(&capture); cvDestroyWindow("avi"); return 0; }
CvCapture 是一个结构体,用来保存图像捕获所需要的信息。 opencv提供两种方式从外部捕获图像,一种是从摄像头中,一种是通过解码视频得到图像。 两种方式都必须从第一帧开始一帧一帧的按顺序获取,因此每获取一帧后都要保存相应的状态和参数。比如从视频文件中获取,需要保存视频文件的文件名,相应的解码器类型,下一次如果要获取将需要解码哪一帧等。 这些信息都保存在CvCapture结构中,每获取一帧后,这些信息都将被更新,获取下一帧需要将新信息传给获取的api接口。
cvCreateFileCapture(char*name):通过输入要读取的avi文件的路径,然后,该函数返回一个指向CvCapture结构体的指针。
cvQueryFrame(capture):输入一个CvCapture类型的指针,该函数主要功能是将视频文件的下一帧加载到内存。与cvLoadImage的不同之处是,该函数不重新分配内存空间。
C=cvWaitKey(33):当前帧被显示后,等待33毫秒。如果用户触发了一个按键,c会被设置成这个按键的ASCII码,否则会被设置成-1。cvWaitKey(33)在此处的另外一个作用是,控制帧率。
cvReleaseCapture(&capture):释放为CvCapture结构体开辟的内存空间,关闭打开的AVI文件相关的文件句柄。
运行时我遇到一个问题,出现debug assertion failed,查找半天没找出问题,后来在狸猫里修改了转换avi的格式为avi auto video后,竟然奇迹的成功运行。
相关文章推荐
- 初学图像处理+opencv----跟踪视频中运动物体
- OpenCV关于视频处理的学习(VideoCapture类)-在检测中一些必要的图像操作
- Python-OpenCV 图像与视频处理
- opencv无法读取视频解决方法&&抽取视频帧存储为图像(python)
- OpenCV2学习笔记(九):视频流读取与处理
- opencv读取视频使用ssd处理定位类别并将处理后类别存储起来
- 初学opencv读取视频的小问题-解决
- OpenCV 从视频或摄像头中读取图像示例
- javacpp-opencv图像处理之2:实时视频添加图片水印,实现不同大小图片叠加,图像透明度控制,文字和图片双水印
- python opencv —— io(帧、图像、视频的读取与保存)
- 关于YUV视频的读取、播放,保存帧图片、以及处理的图像保存为YUV视频。
- Opencv图像处理(读取图像以及简单合并)
- 利用OpenCV进行【视频的读取】与【保存视频文件或者图像】源码!~
- qt中用opencv读取视频并抓取图像
- C++ 调用 opencv 读取视频文件列表并处理
- OpenCV学习笔记02--利用滚动条控制视频;高斯滤波处理图像。
- 图像视频处理中Win7 32位+VS2010+OpenCV2.3.1的配置过程
- Opencv学习——图像及视频读取
- 初学图像处理--跟踪视频中的特征点(光流法)
- OpenCV笔记(1)载入图像 视频播放 读取摄像头