errhandle.cpp
上传用户:banwdc
上传日期:2016-06-25
资源大小:2871k
文件大小:2k
源码类别:

OpenCV

开发平台:

Visual C++

  1. #include "cxcore.h"
  2. #include <stdio.h>
  3. void cvResizeDCT( CvMat* input_array, CvMat* output_array )
  4. {
  5.     CvMat* temp_array = 0; // declare pointer that should be released anyway.
  6.     CV_FUNCNAME( "cvResizeDCT" ); // declare cvFuncName
  7.     __BEGIN__; // start processing. There may be some declarations just after this macro,
  8.                // but they couldn't be accessed from the epilogue.
  9.     if( !CV_IS_MAT(input_array) || !CV_IS_MAT(output_array) )
  10.         // use CV_ERROR() to raise an error
  11.         CV_ERROR( CV_StsBadArg, "input_array or output_array are not valid matrices" );
  12.     // some restrictions that are going to be removed later, may be checked with CV_ASSERT()
  13.     CV_ASSERT( input_array->rows == 1 && output_array->rows == 1 );
  14.     // use CV_CALL for safe function call
  15.     CV_CALL( temp_array = cvCreateMat( input_array->rows, MAX(input_array->cols,output_array->cols),
  16.                                        input_array->type ));
  17.     if( output_array->cols > input_array->cols )
  18.         CV_CALL( cvZero( temp_array ));
  19.     temp_array->cols = input_array->cols;
  20.     CV_CALL( cvDCT( input_array, temp_array, CV_DXT_FORWARD ));
  21.     temp_array->cols = output_array->cols;
  22.     CV_CALL( cvDCT( temp_array, output_array, CV_DXT_INVERSE ));
  23.     CV_CALL( cvScale( output_array, output_array, 1./sqrt((double)input_array->cols*output_array->cols), 0 ));
  24.     __END__; // finish processing. Epilogue follows after the macro.
  25.     // release temp_array. If temp_array has not been allocated before an error occured, cvReleaseMat
  26.     // takes care of it and does nothing in this case.
  27.     cvReleaseMat( &temp_array );
  28. }
  29. int main( int argc, char** argv )
  30. {
  31.     CvMat* src = cvCreateMat( 1, 512, CV_32F );
  32. #if 1 /* no errors */
  33.     CvMat* dst = cvCreateMat( 1, 256, CV_32F );
  34. #else
  35.     CvMat* dst = 0; /* test error processing mechanism */
  36. #endif
  37.     cvSet( src, cvRealScalar(1.), 0 );
  38. #if 0 /* change 0 to 1 to suppress error handler invocation */
  39.     cvSetErrMode( CV_ErrModeSilent );
  40. #endif
  41.     cvResizeDCT( src, dst ); // if some error occurs, the message box will popup, or a message will be
  42.                              // written to log, or some user-defined processing will be done
  43.     if( cvGetErrStatus() < 0 )
  44.         printf("Some error occured" );
  45.     else
  46.         printf("Everything is OK" );
  47.     return 0;
  48. }