虽然很多示例程序网上都有,然而自己进行编译运行时还是会出现很多意料之外的问题,接下来,我就把我遇到的比较头疼的(有解决了的有没有解决的)问题罗列如下:
?
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-->openCV入门----.avi播放闪退、fopen、图像载入速度缓慢问题
原文:http://lps-683.iteye.com/blog/2249854