原来基于vs和msdn一起读视频,结果发现现在的函数不能用了。找不到合适的解码器了,只好转战opencv。
具体怎么用,网上查吧,不过opencv读视频的例子,可以见这个。
http://blog.csdn.net/thefutureisour/article/details/7530344
作者不允许随便转载,只好在这里mark一下。
http://www.cnblogs.com/carekee/articles/2177822.html#!comments
把cv得到的图片转成bitmap。需要把图片内容完全拷贝,包括头文件信息,同时要坐标索引一致。
本来想用原来的程序跑一下的,原来读视频和图像时是用的vfw和mfc的东西,现在想跑起来原来的代码发现读视频时vfw的库函数不能用了,找了几个版本的都不行,装了暴风影音还是不行,解码器估计有问题。想着彻底解决这个问题,就改成opencv吧,可读视频是读进来了,但是读出来每一帧的格式和原来不一样了。原来是bitmap什么的格式,现在是opencv的mat格式,因此除了读进来的地方改成opencv之外,图像处理的主体部分也需要改动。于是现在就有两种思路:
1. 就按照opencv的模式来走,读进来后,就按照其格式走,把代码中凡是用到bitma的地方都改一下,这个工作量还是很大的,而且感觉容易出错。
2. 把opencv读进来的图像,写一个转换接口,转为bitmap的格式,然后其它地方不用改动。这种方式只需要在每一帧读进来后,改一下格式,然后别的地方都不动。
http://bbs.ednchina.com/BLOG_ARTICLE_205865.HTM
http://stackoverflow.com/questions/8501753/how-to-display-opencv-mat-on-mfc-view
http://opencv-users.1802565.n2.nabble.com/Convert-IplImage-to-Bitmap-td3784378.html
这里提到,怎么opencv读的图像在mfc里显示,也是把图像内容赋值给bmp,然后再显示,具体可以见里面的代码。
http://www.cnblogs.com/HappyXie/archive/2011/03/10/1980059.html
这里是怎么把bmp转成opencv的格式。
因此,为了保险起见,采用第二种方式,在以后的使用中,一定要用opencv走遍天下。