各种不给力的流水账-关于写视频文件[2011.6.5]
2011-06-07 10:17
169 查看
不去实验室的日子就木有网可以上啊 ,所以日志只能写在本地,联网了再发。
来实验室已经8天了,第一二两天一直努力在mac os x下装opencv,搜了下说用macports装比较方便,但恰恰是这个macports浪费了我两天还没搞定。装完总是无法连接到更新的站点,所以也装不了opencv。坑爹。
忍不住下了opencv,自己手动编译,结果,一小时以内就搞定了,可能只有半小时吧。装完运行了一个显示图片的程序,成功。
然后半贴半改了一个摄像头捕捉并显示,然后模拟拍照的,按键的时候把图片保存下来的一个程序,也成功了。So nice。
然后又写了个将视频数据写入avi文件的程序,结果失败,cvWriteFrame()函数处报错,然后改成用图片作为一帧写入,依旧这个问题。write有个类型的参数,设为-1理应跳出选择框,反正我试了n多参数都什么反应也木有,就是错啊错啊错。(后来才晓得-1是windows下面用的,mac当然木有反应。)
后来又看到viedoInput那个第三方的库,据说用DShow驱动所以效率比较高,然后,毕设折腾n久DShow的我再次抽了,木有反应到这个是windows的东东,居然试图在mac下跑,有错误我还一个个排查,一个个改,终于看到windows.h这个头文件的时候,我,放弃了,而且终于意识到了我的NC。
话说这个时候我还是挺怀念DShow的,当初觉得好纠结,但是写好了发现至少捕捉+写文件很方便,不过也许等我学会opencv的时候也会觉得简单了。反正我第一眼看到opencv的时候觉得哇好方便,居然几个函数就好了,哪像DShow这么麻烦,可惜那几个函数不给力啊,要不然真的很简单。
继续折腾那个写的函数好几天未果,终于前天果断删掉被毕设搞的面目全非的xp,装了win7,然后又装软件装了好久,NC地装上了vs2010,又装了opencv以后发现再次悲剧。显示图片的程序成功,接着直接试cvWriteFrame()。程序是mac下面拷过来的,是那个用图片写入avi的。结果,-1那个框倒是有了,但依旧这个函数错误 。错误信息是kernal.dll,搜了下貌似都是win7下面的错。想死的心都有了。总共就几行代码,没道理这么折腾啊。
各种搜索各种不给力,无奈求助学姐,学姐又找来学长甲,折腾半天发现换成具体的编码方式就不会报dll错,但是这个函数依然写不了,会有内存错误。学长甲用了个c++封装的函数写了居然就可以,换回c版的依旧报错。我都想买豆腐去了。。。
中午吃完饭,恰好boss来实验室,无奈下求助boss,boss听我说完召唤了学长乙,让学长乙帮我搞定,自己潇洒的走了。学长乙看了半天觉着不是代码的问题,但表示他们平时都是用c++版本的函数,写着方便。随后各种组合,就是c++和c的函数混着用,终于发现cvWriteFrame()还是可以用滴。不过前面一小段载入图像的要改。后来我自己再缩小范围,发现是cv::imread()读图片就可以,而cvLoadImage()就不行。虽然我还是不知道为什么。
这个问题就先放着,然后尝试摄像头采集然后写文件。但,不幸的是,mac下面那个可以运行的模拟拍照的那个程序居然失败,窗口出现的始终是一片灰色,纯色。Orz。google之。据说$(OpenCV Folder)/modules/highgui/src/precomp.hpp把#if !defined WIN32 && !defined _WIN32#include "cvconfig.h"#elsevoid FillBitmapInfo( BITMAPINFO* bmi, int width, int height, int bpp, int origin );#endif 改成#include "cvconfig.h"#if defined WIN32 || defined _WIN32void FillBitmapInfo( BITMAPINFO* bmi, int width, int height, int bpp, int origin );#endif就可以了。但,对我无效。后来发现我电脑里面木有cvconfig.h,网上说那个可能是cmake搞出来的一个文件,反正我win7下面是自动装的那种,不是用cmake的。
拖videoInput的过来跑了下,居然这个可以用。搜了下貌似mac的摄像头比较纠结,据说装VFW的驱动就可以,如果是DShow的驱动就不能用cv里面那个函数,要用videoInput的。
好吧,我也不打算换驱动,反正videoInput效率比较高,先用着吧。
写了下,终于实现了摄像头采集写视频文件了,诶,一波n折啊。总算这么多天也有个安慰。
顺便网上又买了一本opengl的书,鸭梨山大啊。还没想好明天做什么,反正争取把基本函数先用用,然后看看算法啥的。这个估计要好久了。诶。学无止境呐。
总结:装东西的应该不能算在里面,虽然耗费了我大部分时间。其他主要就是用了载入图像、显示图像、写视频文件、摄像头捕捉。
Update :早上把那个图片写入视频文件成功的程序放到mac下跑,居然没报错,视频文件也又8kb,创建的时候是4kb,说明有东西写进去了,但打开却仍然木有东西,时间为0。然后又改成opencv自带那个摄像头的函数,结果视频文件仍然8k,看不到东西,但如果把写入的函数去掉,就是只创建不写入的话是4k。这两次都是没有报错的,程序正常结束。诶,纠结。
——11.6.6
来实验室已经8天了,第一二两天一直努力在mac os x下装opencv,搜了下说用macports装比较方便,但恰恰是这个macports浪费了我两天还没搞定。装完总是无法连接到更新的站点,所以也装不了opencv。坑爹。
忍不住下了opencv,自己手动编译,结果,一小时以内就搞定了,可能只有半小时吧。装完运行了一个显示图片的程序,成功。
然后半贴半改了一个摄像头捕捉并显示,然后模拟拍照的,按键的时候把图片保存下来的一个程序,也成功了。So nice。
然后又写了个将视频数据写入avi文件的程序,结果失败,cvWriteFrame()函数处报错,然后改成用图片作为一帧写入,依旧这个问题。write有个类型的参数,设为-1理应跳出选择框,反正我试了n多参数都什么反应也木有,就是错啊错啊错。(后来才晓得-1是windows下面用的,mac当然木有反应。)
后来又看到viedoInput那个第三方的库,据说用DShow驱动所以效率比较高,然后,毕设折腾n久DShow的我再次抽了,木有反应到这个是windows的东东,居然试图在mac下跑,有错误我还一个个排查,一个个改,终于看到windows.h这个头文件的时候,我,放弃了,而且终于意识到了我的NC。
话说这个时候我还是挺怀念DShow的,当初觉得好纠结,但是写好了发现至少捕捉+写文件很方便,不过也许等我学会opencv的时候也会觉得简单了。反正我第一眼看到opencv的时候觉得哇好方便,居然几个函数就好了,哪像DShow这么麻烦,可惜那几个函数不给力啊,要不然真的很简单。
继续折腾那个写的函数好几天未果,终于前天果断删掉被毕设搞的面目全非的xp,装了win7,然后又装软件装了好久,NC地装上了vs2010,又装了opencv以后发现再次悲剧。显示图片的程序成功,接着直接试cvWriteFrame()。程序是mac下面拷过来的,是那个用图片写入avi的。结果,-1那个框倒是有了,但依旧这个函数错误 。错误信息是kernal.dll,搜了下貌似都是win7下面的错。想死的心都有了。总共就几行代码,没道理这么折腾啊。
各种搜索各种不给力,无奈求助学姐,学姐又找来学长甲,折腾半天发现换成具体的编码方式就不会报dll错,但是这个函数依然写不了,会有内存错误。学长甲用了个c++封装的函数写了居然就可以,换回c版的依旧报错。我都想买豆腐去了。。。
中午吃完饭,恰好boss来实验室,无奈下求助boss,boss听我说完召唤了学长乙,让学长乙帮我搞定,自己潇洒的走了。学长乙看了半天觉着不是代码的问题,但表示他们平时都是用c++版本的函数,写着方便。随后各种组合,就是c++和c的函数混着用,终于发现cvWriteFrame()还是可以用滴。不过前面一小段载入图像的要改。后来我自己再缩小范围,发现是cv::imread()读图片就可以,而cvLoadImage()就不行。虽然我还是不知道为什么。
这个问题就先放着,然后尝试摄像头采集然后写文件。但,不幸的是,mac下面那个可以运行的模拟拍照的那个程序居然失败,窗口出现的始终是一片灰色,纯色。Orz。google之。据说$(OpenCV Folder)/modules/highgui/src/precomp.hpp把#if !defined WIN32 && !defined _WIN32#include "cvconfig.h"#elsevoid FillBitmapInfo( BITMAPINFO* bmi, int width, int height, int bpp, int origin );#endif 改成#include "cvconfig.h"#if defined WIN32 || defined _WIN32void FillBitmapInfo( BITMAPINFO* bmi, int width, int height, int bpp, int origin );#endif就可以了。但,对我无效。后来发现我电脑里面木有cvconfig.h,网上说那个可能是cmake搞出来的一个文件,反正我win7下面是自动装的那种,不是用cmake的。
拖videoInput的过来跑了下,居然这个可以用。搜了下貌似mac的摄像头比较纠结,据说装VFW的驱动就可以,如果是DShow的驱动就不能用cv里面那个函数,要用videoInput的。
好吧,我也不打算换驱动,反正videoInput效率比较高,先用着吧。
写了下,终于实现了摄像头采集写视频文件了,诶,一波n折啊。总算这么多天也有个安慰。
顺便网上又买了一本opengl的书,鸭梨山大啊。还没想好明天做什么,反正争取把基本函数先用用,然后看看算法啥的。这个估计要好久了。诶。学无止境呐。
总结:装东西的应该不能算在里面,虽然耗费了我大部分时间。其他主要就是用了载入图像、显示图像、写视频文件、摄像头捕捉。
Update :早上把那个图片写入视频文件成功的程序放到mac下跑,居然没报错,视频文件也又8kb,创建的时候是4kb,说明有东西写进去了,但打开却仍然木有东西,时间为0。然后又改成opencv自带那个摄像头的函数,结果视频文件仍然8k,看不到东西,但如果把写入的函数去掉,就是只创建不写入的话是4k。这两次都是没有报错的,程序正常结束。诶,纠结。
——11.6.6
相关文章推荐
- 关于各种文件用Editplus的方式打开出现“向程序发送命令时出现问题”的解决方法
- 【分享】关于站点无法播放视频文件比如flv的文件。
- 关于LED电视机视频编码H.264,MPEG4,MPEG2能支持哪些格式的视频文件
- 关于apache的各种文件的运行
- 关于OpenCV打开视频文件的个人总结
- CxImage与OpenGL结合,用于读入多种格式的纹理以及用来把屏幕保存为各种格式的图像文件。 关于CxImage的文章,网上有许多,这里只介绍如何把CxImage与OpenGL结合起来,用于读
- 网页中插入各种类型视频文件
- 笔记-Android中打开各种格式的文件(apk、word、excel、ppt、pdf、音视频、图片等)
- 关于各种项目的SVN 版本控制忽略文件类型搜集
- 收集一些关于视频文件格式以及编码计算的一些知识
- Android——UI篇:关于上次发的博文,6.0以上系统视频压缩出现的各种问题解决。
- cocos 关于文件名称的各种坑 各种斜杠坑
- 关于cvCreateFileCapture()读取视频文件失败的解决方案
- 关于os的一系列问题:寻找目录中的视频文件,并存储路径
- Android获取本机各种类型文件列表(音乐、视频、图片、文档等)
- asp.net中将各种视频文件转换成.flv格式
- 收集一些关于视频文件格式以及编码计算的一些知识
- 海量IT资料 + 各种平台下的Oracle安装文件 + 公开课录像 + 各种视频教程资料
- 关于加载flv,mp4视频文件拖动播放问题
- Opencv保存摄像头视频&&各种编码器下视频文件占用空间对比