#include <stdio.h>
#include "cv.h"
#include "highgui.h"
int main()
{
CvCapture* webcam = cvCreateCameraCapture(0);
cvNamedWindow("webcam",0);
if(!webcam){
return;
}
while(1){
IplImage* image =cvQueryFrame(webcam);
if(image){
cvWaitKey(10);
cvShowImage("webcam",image);
}
}
cvReleaseCapture(webcam);
cvDestroyWindow("webcam");
return 0;
}
那么这段代码的含义还是相当容易的。
CvCapture* webcam = cvCreateCameraCapture(0);
从摄像头中读入视频文件,同时返回一个指向CvCapture结构的指针,这个结构包含了视频文件的信息。那么参数信息其实就是选择计算机上的摄像头,如果只有一个摄像头的话,就设置为0即可。
IplImage* image =cvQueryFrame(webcam);
cvQueryFrame()函数的参数为CvCapture结构的指针,用来将下一帧视频文件载入内存(实际是填充或更新CvCapture结构),返回一个对应当前帧的指针。与cvLoadImage不同的是,cvLoadImage为图像分配内存空间,而cvQueryFrame使用已经在CvCapture中分配好的内存。所以不用使用cvReleaseImage()对这个返回的图像指针进行释放。当CvCapture结构被释放的后,每一帧图像对应的空间也会被释放。
当然最后还是不要忘记释放空间,拿了编译器的空间,用完了再给它的。
WARM Tip:将在下一篇文章中讲解真正利用OpenCV来进行图像处理。