C++ 执行后未处理的异常

C++ 执行后未处理的异常,c++,visual-studio-2010,opencv,C++,Visual Studio 2010,Opencv,我正在尝试使灰色图像更明亮,代码确实正常编译,但在第二张图片中没有更改,执行完成后出现错误消息未处理异常…。下面是我的一段代码: int main(int argc, _TCHAR* argv[]) { IplImage *img = cvLoadImage("mra.jpg"); if (!img) { printf("Error: Couldn't open the image file.\n"); return 1; } //

我正在尝试使灰色图像更明亮,代码确实正常编译,但在第二张图片中没有更改,执行完成后出现错误消息
未处理异常…
。下面是我的一段代码:

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 ;
}
int main(int argc,_TCHAR*argv[]
{
IplImage*img=cvLoadImage(“mra.jpg”);
如果(!img){
printf(“错误:无法打开图像文件。\n”);
返回1;
}
//IplImage*new_image=getlargersize(img);
双最小值,最大值;
最小值=最大值=0;
最大最小值(img、最小值和最大值);
cout
    <>你说你在标签中使用C++,但是使用OpenCV的C接口。为什么?C++接口更友好。
  • 有一些opencv函数用于你的函数所做的事情。用于最小值和最大值以及缩放图像值
  • <> LI>您的访问违反可能是因为您释放了两次图像。您的<代码> EcLrcIIR < /Calp>返回输入图像,因此<代码> IMG< /COD>和 IMG2指向相同的IPLION。C++使用接口的另一个原因。
要确定为什么会出现异常,了解您会遇到什么异常显然很有用。此外,您还应该设置帖子的格式,使其可读(编辑窗口上方有一些按钮,您可以单击以进行格式设置)。在Visual Studio中,有一个选项允许调试器在出现异常时中断。