做完图像读取再来做一下视频读取,这里不知道为什么程序写好后出现找不到dll的错误
这个dll名字是libiconv-2.dll 后来在网上找了一个 然后下载到了opencv的bin目录中
我的目录是 D:\opencv\build\x86\vc10\bin 下载地址是http://www.jb51.net/dll/libiconv-2.dll.html#down
然后就好了
哦 对还有好像opencv据说支持的视频格式是两种指定编码的avi格式视频,这里有一个很好用的视频转换器http://pan.baidu.com/share/link?shareid=98638&uk=2517492675 转换成avi就可以读取了
代码
#include "opencv2/opencv.hpp"
using namespace cv;
int main(int, char**)
{
// read file CvCapture structure used to save the information from video file
CvCapture *cap = cvCreateFileCapture("test2.avi");
if (!cap)
return -1;
IplImage* frame;
namedWindow("test");
while (true)
{
frame = cvQueryFrame(cap);
if (!frame) break;
cvShowImage("test", frame);
if (waitKey(33) == 97)
break;
}
cvReleaseCapture(&cap);
return 0;
}
有时候获取到的cap为空可能是你的电脑没有相应的avi视频解码器
while循环中用cvQueryFrame函数来获取视频的每一帧 准确说是参数当前帧的下一帧 这里不会为每一帧分配新的内存空间,而是把新的一帧复制到CvCapture结构体中的一块内存
如果没有视频帧了 就break出循环
waitKey函数主要功能是等待按键输入 返回值是按键的ascii码 97是小写a的ascii码 那if (waitKey(33) == 97)就表示在这一个帧显示的接下里33毫秒内如果按下了a就停止播放视频 这个waitKey也可以控制帧率 这里1帧用33毫秒, 相当于30fps