通过OpenCV读视频或是(摄像头)的时候,通常会使用CvCapture和IplImage *。一个典型的代码如下:
注意程序中注释掉的那个地方。在读视频(摄像头)时,不用也不能去释放frame,否则会出错。
即使我们在if 创建了 frame 对像,也不能释放,因为这样也会出错。
实际上,在读视频(摄像头)的时候,没有必要使用 cvCreateImage 创建一个图片对像。
CvCapture *cap;
IplImage *frame;
const char ESC = 27;
if ((cap = cvCreateCameraCapture(0)) != 0)
{
cvNamedWindow("Camera");
while ((frame = cvQueryFrame(cap)) != 0 &&
cvWaitKey(20) != ESC)
{
frame = cvQueryFrame(cap);
cvShowImage("Camera", frame);
}
cvReleaseCapture(&frame);
/* cvReleaseImage(&frame);
* 注意,这里不能释放,释放会出错
*/
cvDestroyWindow("Camera");
}
注意程序中注释掉的那个地方。在读视频(摄像头)时,不用也不能去释放frame,否则会出错。
即使我们在if 创建了 frame 对像,也不能释放,因为这样也会出错。
实际上,在读视频(摄像头)的时候,没有必要使用 cvCreateImage 创建一个图片对像。