执行后未处理的异常

Posted

技术标签:

【中文标题】执行后未处理的异常【英文标题】:Unhandled exception after execute 【发布时间】:2011-01-08 23:39:51 【问题描述】:

我正在尝试使灰色图像更亮,代码编译正常但第二张图片没有变化,执行完成后出现错误消息Unhandled exception ...。这是我的一段代码:

int main(int argc, _TCHAR* argv[])

    IplImage *img = cvLoadImage("mra.jpg");
    if (!img) 
        printf("Error: Couldn't open the image file.\n");
        return 1;
    
    //IplImage* new_image = getlargersize(img);

    double Min , Max ;
    Min = Max = 0 ;
    Max_Min (img , &Min , &Max);
    cout<<"the max value in the picture is :"<<Min<<" and the minimum value is :"<<Max<<endl ;

    IplImage* img2 = eclaircir(Min ,Max ,img);

    cvNamedWindow("Image:", CV_WINDOW_AUTOSIZE);
    cvNamedWindow("Image2:", CV_WINDOW_AUTOSIZE);
    cvShowImage("Image2:", img2);
    cvShowImage("Image:", img);

    cvWaitKey(0);

    cvDestroyWindow("Image2:");
    cvDestroyWindow("Image:");
    cvReleaseImage(&img2);
    cvReleaseImage(&img);
    return 0;
    
void Max_Min(IplImage* temp , double *min , double *max )
    CvScalar pix ; 
    for (int i = 0 ; i < temp->height ; i++)
        for (int j = 0 ; j < temp->width ; j++)
            pix = cvGet2D(temp , i , j); 
            if ( pix.val[0] >= *max )
                *max = pix.val[0];
            
            if ( pix.val[0] <= *min)
            *min = pix.val[0];
            
        
    


IplImage* eclaircir (double min , double max , IplImage* image)
    double temp = max - min ;
    CvScalar pix ;
    for (int i = 0 ; i < image->height ; i++)
        for (int j = 0 ; j < image->width ; j++)
            pix = cvGet2D(image , i , j); 
            pix.val[0] = ( pix.val[0] - min)*255 ;
            pix.val[0] = pix.val[0]/temp ;
            cvSet2D(image , i , j , pix );
        
    
    return image ;

【问题讨论】:

要确定你为什么会得到一个异常,知道你得到的什么异常显然是有用的。此外,您应该格式化您的帖子,使其可读(编辑窗口上方有一些按钮,您可以单击以进行格式化)。 在 Visual Studio 中有一个选项可以让调试器在异常情况下中断。 【参考方案1】: 你说你在你的标签中使用C++,但是使用opencv的C接口。为什么? C++ 界面要友好得多。 有一些 opencv 函数可用于您的函数正在执行的操作。 http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html#cv-minmaxloc 用于最小值和最大值,http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html?highlight=scaleabs#convertScaleAbs 用于缩放图像值。 您的访问冲突可能是因为您释放了图像两次。您的eclaircir 返回输入图像,因此imgimg2 指向同一个IplImage。使用 c++ 接口的另一个原因。

【讨论】:

以上是关于执行后未处理的异常的主要内容,如果未能解决你的问题,请参考以下文章

第63课 C语言异常处理

OOM异常产生的原因和处理方法

执行 AJAX 请求后未应用 CSS

显示徽标后未处理 Visual Studio 2013 安装

有时在 UIGestureRecognizer 处理程序后未触发 IBAction

java怎么处理异常让程序继续执行