zoukankan      html  css  js  c++  java
  • 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);
  • 相关阅读:
    FastDFS 安装与使用
    leecode刷题(18)-- 报数
    时间戳转换日期格式
    嵌入式Linux的FTP服务端软件(stupid-ftpd)
    iMx280A测试声纹
    Linux 版本查询
    Linux下的目录结构
    uboot主Makefile分析
    uboot配置过程详解1
    路由器设置
  • 原文地址:https://www.cnblogs.com/skiz/p/3018635.html
Copyright © 2011-2022 走看看