openCV入门----.avi播放闪退、fopen、图像载入速度缓慢问题

虽然很多示例程序网上都有,然而自己进行编译运行时还是会出现很多意料之外的问题,接下来,我就把我遇到的比较头疼的(有解决了的有没有解决的)问题罗列如下:

 

1.程序播放.AVI程序时闪退(未解决)

在显示图像之后,我尝试过播放.AVI文件,代码网上比比皆是,大多数都如出一辙。但是总是出现程序运行了窗口弹出后,显示了一帧图像就立马退出的问题!网上查找了相关问题的解决办法,大多查询到的是一下所述方法:

转换格式解决方法:

解决方法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. 保存完毕。

然而我使用了之后发现效果并不好,几乎没有什么解决效果(难道是我用的不对?),而且还会带来新的问题,一个几十M的小视频在转换编码格式之后可以变到几个G甚至几十个G,这样的代价太大了!所以这个问题如何解决还有待进一步探讨,也欢迎各位指导!

 

2.error C4996: 'fopen'

往往一个程序并没有编译的错误,然而运行起来却会发现这样的错误:

error C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

1>f:\program files (x86)\microsoft visual studio 12.0\vc\include\stdio.h(211) : 参见“fopen”的声明

参考网上的解决方案可以顺利解决这个问题,其实在报的错误就可以看出解决方法: use _CRT_SECURE_NO_WARNINGS,我们在属性里预编译器里添加这么一句话就可以了,如下步骤:

1>右键点击所建“项目”,点击“属性”

 2>展开“C++/C”一栏,双击预处理器

3>双击第一项,在输入框将_CRT_SECURE_NO_WARNINGS复制进去,点击确定即可完成配置操作!

 

3.图像载入缓慢问题

新手写代码有没有发现过这样一个问题,往往在cvShowImage后面加上一个cvWaitKey函数,为的是延时一定的时间再等待按键响应,然而这样的语句在VS里不是很凑效,往往是延时了指定时间后就直接退出了,那么在这时候我们将cvWaitKey改成getchar或者system(pause)就可以了!当然,部分用户可能做到这里就已经搞定了,但是可能有部分用户会发现如果这样改的话,图像载入非常的缓慢,甚至好几分钟都出不来图像。

那么解决方案来了:

在cvShowImage与getchar或者system(pause)之间加一个延时函数,可以使用cvWaitKey(int t)代替,如果效果不佳可以适当地加大t,也就是延时时间,这样问题就解决了!

 

<!--EndFragment-->

猜你喜欢

转载自lps-683.iteye.com/blog/2249854