OpenCV Error: Bad argument (unrecognized or unsupported array type) in u unction
今天遇到个错误: 在程序退出的时候 提示报错
OpenCV Error: Bad argument (unrecognized or unsupported array type) in u
unction, file ..\..\..\src\opencv\modules\core\src\array.cpp, line 996
然后上代码
int _tmain(int argc, _TCHAR* argv[]) { IplImage* src = 0; //原图 IplImage* graySrc = 0; //灰度图 int key = 0; CvCapture* capture = cvCaptureFromCAM(0); cvNamedWindow("camera"); cvNamedWindow("gray"); while( NULL != (src = cvQueryFrame(capture) ) ) { cvShowImage("camera",src); //显示摄像头画面 if( (key = waitKey(10)) !=-1)//如果2ms内有按键 有返回值key { printf("press key:%c\n",key); if(key == 'q'){ waitKey(10); cvDestroyWindow("camera"); cvDestroyWindow("gray"); break; } } //获取src的灰度图 graySrc = cvCreateImage(cvSize(src->width,src->height),src->depth,1); cvCvtColor(src,graySrc,CV_BGR2GRAY); cvShowImage("gray",graySrc); } cvReleaseImage(&src); cvReleaseImage(&graySrc); cvReleaseCapture(&capture); return 0; }
捣鼓一阵,发现应该是内存错误。
根据http://blog.csdn.net/zhmyy/article/details/5374111,src和gray在ReleaseImage之前已经释放掉,所以找不到地址,于是报错
于是在Release之前判断一下是否已经释放
if(!src) cvReleaseImage(&src); if(!graySrc) cvReleaseImage(&graySrc);