专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 图形/图像

关于cvWaitKey的有关问题

发布时间:2011-06-27 20:39:29 文章来源:www.iduyao.cn 采编人员:星星草
关于cvWaitKey的问题
自己写了一个从摄像头捕获图像的程序,代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <iostream>

#include <cv.h>
#include <cxcore.h>
#include <highgui.h>

int main(int argc, char** argv){

IplImage* pFrame = 0;
CvCapture* pCapture = 0;
if(!(pCapture = cvCaptureFromCAM(-1))) {
printf("Can not open the camera!\n");
return -1;
}
cvNamedWindow("Camera",CV_WINDOW_AUTOSIZE);
cvMoveWindow("Camera",0.0,0.0);
while(pFrame = cvQueryFrame(pCapture)){
if(cvWaitKey(2)==27){
printf("Esc is pressed.\n");
//return 0;
break;
}
cvShowImage("Camera",pFrame);
}

cvReleaseImage(&pFrame);
cvReleaseCapture(&pCapture);
cvDestroyWindow("Camera");

return 0;
}

运行程序的时候报错,错误信息为
OpenCV Error: Bad argument(unrecognized or unsupported array type) in unknown function, file ..\..\..\cxcore\cxarray.cpp, line 991

如果把break那行注掉,把上边的return 0解除注释,程序就不会报错,但无法回到原来的命令行,我必须把command window关掉,然后重新开command window,进入exe文件的文件夹,运行程序

奇怪的是,我在以前的程序里用过完全一样的方法使程序跳出while循环,没有任何问题

望各位指教,谢谢!

------解决方案--------------------
cvReleaseImage(&pFrame);

这个去掉,pFrame只是指向,没有分配,所以不用Release
------解决方案--------------------
cvReleaseImage(&pFrame);
去掉这条语句就能正确执行了
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: