例外非géréeà0x100e3cf2dans shervinemami.exe:0xC0000094:整数除零

时间:2012-05-06 00:02:06

标签: c++ visual-studio-2008 opencv

帮助我如何编织它,[尝试执行我的代码时的警报窗口] [1]

注意调试很好并且成功但是当尝试执行代码时,我在输出窗口中收到一条消息;例外非géréeà0x100e3cf2dans shervinemami.exe:0xC0000094:整数除零..这意味着除了零之外有一个异常,这就是代码:

        IplImage* LOULILI::cropFace(IplImage*image, CvPoint eye_left, CvPoint eye_right,double offset_pct[2], CvSize dest_sz)
          {
      //calculate offsets in original image
            double offset_h = offset_pct[0]* dest_sz.width;
            double offset_v = offset_pct[1]*dest_sz.height;
           //get the direction
           double   eye_directionX,eye_directionY;
           eye_directionX= double(eye_right.x - eye_left.x);
            eye_directionY=double(eye_right.y - eye_left.y);
          // calc rotation angle in radians
          double rotation;
          rotation =  double(-atan2(eye_directionY,eye_directionX )*180/PI);
           // distance between them
            double dist = distancePoints(eye_left, eye_right);
             //calculate the reference eye-width
             double reference = dest_sz.width - 2.0*offset_h;
           //scale factor
              double scale = dist/reference;
          //rotation par rapport à l'oeil gauche
         //matrice de rotation
      cv::Mat affine_matrix;
       affine_matrix =cv::getRotationMatrix2D( eye_left, rotation, scale );
           //mtx est la conversion de image IplImage* en matrice mtx
            cv::Mat mtx=cv::Mat(image,true); 
          cv::Mat mtx2;
         cv::warpAffine(mtx, mtx2, affine_matrix,mtx.size(),cv::INTER_LINEAR,                                cv::BORDER_CONSTANT,cv::Scalar::all(255));
  //mtx est la conversion de matrice mtx2 en  image IplImage* 
  //IplImage* image1 =&mtx2.operator IplImage();
 IplImage image1 =mtx2;
 IplImage* im22=(IplImage*)&image1;
      //crop the rotated image
         double crop_x =double(eye_left.x) - scale*offset_h;
       double crop_y =double(eye_left.y) - scale*offset_v;

 double crop_size0 = (double)dest_sz.width*scale;
  double crop_size1= (double)  dest_sz.height*scale;
         CvRect region;
       region.x=cvRound(crop_x);
       region.y=cvRound(crop_y);
        region.width=cvRound (crop_size0);
         region.height=cvRound(crop_size1);

            IplImage* im44=cropImage(im22,region);
          //crop((int(crop_xy[0]), int(crop_xy[1]), int(crop_xy[0]+crop_size[0]),                       int(crop_xy[1]+crop_size[1])))

          IplImage* image3=resizeImage(im44, dest_sz.width, dest_sz.width);
           return im44;
                  }

1 个答案:

答案 0 :(得分:0)

该代码中没有整数除法,因此我们无法提供帮助。您可能希望在调试模式下编译并将调试器设置为在C ++异常上中断(您可以在Visual Studio的Exception窗口中执行此操作)。