errhandle.cpp
上传用户:banwdc
上传日期:2016-06-25
资源大小:2871k
文件大小:2k
- #include "cxcore.h"
- #include <stdio.h>
- void cvResizeDCT( CvMat* input_array, CvMat* output_array )
- {
- CvMat* temp_array = 0; // declare pointer that should be released anyway.
- CV_FUNCNAME( "cvResizeDCT" ); // declare cvFuncName
- __BEGIN__; // start processing. There may be some declarations just after this macro,
- // but they couldn't be accessed from the epilogue.
- if( !CV_IS_MAT(input_array) || !CV_IS_MAT(output_array) )
- // use CV_ERROR() to raise an error
- CV_ERROR( CV_StsBadArg, "input_array or output_array are not valid matrices" );
- // some restrictions that are going to be removed later, may be checked with CV_ASSERT()
- CV_ASSERT( input_array->rows == 1 && output_array->rows == 1 );
- // use CV_CALL for safe function call
- CV_CALL( temp_array = cvCreateMat( input_array->rows, MAX(input_array->cols,output_array->cols),
- input_array->type ));
- if( output_array->cols > input_array->cols )
- CV_CALL( cvZero( temp_array ));
- temp_array->cols = input_array->cols;
- CV_CALL( cvDCT( input_array, temp_array, CV_DXT_FORWARD ));
- temp_array->cols = output_array->cols;
- CV_CALL( cvDCT( temp_array, output_array, CV_DXT_INVERSE ));
- CV_CALL( cvScale( output_array, output_array, 1./sqrt((double)input_array->cols*output_array->cols), 0 ));
- __END__; // finish processing. Epilogue follows after the macro.
- // release temp_array. If temp_array has not been allocated before an error occured, cvReleaseMat
- // takes care of it and does nothing in this case.
- cvReleaseMat( &temp_array );
- }
- int main( int argc, char** argv )
- {
- CvMat* src = cvCreateMat( 1, 512, CV_32F );
- #if 1 /* no errors */
- CvMat* dst = cvCreateMat( 1, 256, CV_32F );
- #else
- CvMat* dst = 0; /* test error processing mechanism */
- #endif
- cvSet( src, cvRealScalar(1.), 0 );
- #if 0 /* change 0 to 1 to suppress error handler invocation */
- cvSetErrMode( CV_ErrModeSilent );
- #endif
- cvResizeDCT( src, dst ); // if some error occurs, the message box will popup, or a message will be
- // written to log, or some user-defined processing will be done
- if( cvGetErrStatus() < 0 )
- printf("Some error occured" );
- else
- printf("Everything is OK" );
- return 0;
- }