2011-01-08 60 views
-1

我試圖使灰色圖像更亮,代碼確實編譯了正常,但沒有更改後臺圖片,並且在執行完成後顯示錯誤消息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 ; 
} 
+1

要確定爲什麼你會得到一個異常,知道你得到了什麼異常顯然是有用的。此外,你應該格式化你的文章,使其可讀性(編輯窗口上方有按鈕,您可以點擊進行格式化)。 – sth 2011-01-08 23:46:03

+1

在Visual Studio中,有一個選項可以讓調試器中斷異常。 – StackedCrooked 2011-01-09 00:53:26

回答

2