Opencv读取视频一闪而过情况分析
来源:互联网 发布:昆明网络维护员 编辑:程序博客网 时间:2024/05/22 09:39
在参加一个软件比赛需要用opencv对视频的处理,也碰到了一些问题。
最常见的就是视频一闪而过了,在网上查了好久都没解决,
最后重装在配置环境变量时发现的。
现在我来终结一下估计是比较全的了。
先说明我用的是vs2012+opencv(2.4.8),c++编程;
关于配置就不说了网上很多
代码如下:
#include"highgui.h"#include"cv.h" //声明一个CvCapture类型指针 用于接收cvCreateFileCapture的返回值CvCapture* g_capture = NULL;//记录滚动条的当前位置int g_slider_pos = 0 ;//对视频帧进行计数的变量int frame_count = 0; //滚动条的回调函数 参数int pos 是指当前滚动条所在位置void on_changed(int pos){//设置g_capture的属性 使得 从位置pos开始播放视频cvSetCaptureProperty(g_capture,CV_CAP_PROP_POS_FRAMES,pos);//在拉动滚动条后 保持变量frame_count与滚动条的位置是同步的 frame_count = pos ;} int main(int argc,char* argv[]){//创建一个窗口 cvNamedWindow( "show");//打开有一个视频文件g_capture=cvCreateFileCapture("D:\\car.mp4");//获取视频的总帧数int frames=(int )cvGetCaptureProperty(g_capture,CV_CAP_PROP_FRAME_COUNT); if(frames>0){//在窗口show上创建名字为Position的滚动条cvCreateTrackbar( "Position","show" ,&g_slider_pos,frames,on_changed);} //图像指针变量IplImage* frame; while(1){//从g_capture获取一帧图像 填充到相应的内存缓冲区frame=cvQueryFrame(g_capture);//如果到视频结尾 则退出循环if(!frame) break ;//显示图像cvShowImage( "show",frame);//接收用户按键char c = cvWaitKey(33);//如果接收到 按键'Esc' 则退出循环if(c==27)break;//滚动条 随着视频的播放 进行移动cvSetTrackbarPos( "Position","show" ,frame_count);frame_count++;}//释放资源cvReleaseCapture(&g_capture);cvDestroyWindow( "show");return 0;}
1.网上很多说是avi格式问题,尽管是AVI文件, 需要把它转换OpenCV支持的AVI文件.
(这是copy网上的)
OpenCV支持的AVI如下:
Container
FourCC
Name
Description
AVI
'DIB '
RGB(A)
Uncompressed RGB, 24 or 32 bit
AVI
'I420'
RAW I420
Uncompressed YUV, 4:2:0 chroma subsampled
AVI
'IYUV'
RAW I420
identical to I420
转换格式解决方法:
解决方法1:下载mencoder.exe, 在window命令行下使用: mencoder in.avi -ovc raw -vf format=i420 -o out.avi
解决方法2:下载VitualDub, 我使用1.9.4版本a. File->Open Video File;b. Video->Filters->Add->Convert format;
选择4:2:0 Planar YCbCr (YV12)或者 32-Bit RGB。c. Save as AVI. 保存完毕。”
还有网上说opencv只支持avi格式至少我现在用的2.4.8还能支持MP4格式了,还跑得不错。
2.最后就是在配置环境变量时path路径一定要看清楚是否写对,
否则同样的代码和视频文件在别人电脑上跑得好好的就你的有问题,可能就是这个问题了。
好了这是我写的第一篇博客,写的不好多多见谅!!!
- Opencv读取视频一闪而过情况分析
- Opencv1.0出现播放视频是一闪而过的情况分析
- windows opencv新手读取视频或摄像头,一闪而过,只显示第一帧
- 如何解决opencv读取avi视频文件一闪而过
- 如何解决opencv读取avi视频文件一闪而过
- 如何解决opencv读取avi视频文件一闪而过
- OpenCV读取视频要求
- OpenCV读取视频
- OpenCV读取视频
- opencv读取视频
- Opencv读取视频代码
- openCV 之 读取视频
- OpenCV编程->视频读取
- openCV 视频读取
- OpenCV视频的读取
- opencv读取视频
- OpenCv读取一段视频
- OpenCV读取视频
- 小明求素数积
- Software Version 1976
- Upgrade shell的一些知识
- 编程之美读书笔记最大公约数
- ZOJ 2109 FatMouse' Trade (背包 dp + 贪心)
- Opencv读取视频一闪而过情况分析
- 解决ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'
- CSS:绝对定位元素实现水平居中
- 升级你的App,都知道怎么做吗
- WMA无损转换
- nfected Computer
- hive全排序中的问题
- 对图片加入特定水印的方法
- 15.重启tomcat,session仍存在