Wondercoll
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
Macros | Functions
cxminmaxloc.cpp File Reference
#include "_cxcore.h"

Macros

#define CV_MINMAXLOC_ENTRY(_toggle_, srctype, temptype, cn)
 
#define CV_MINMAXLOC_EXIT(_fin_cast_macro_)
 
#define ICV_DEF_MINMAXLOC_1D_CASE_COI(_toggle_, temptype, cn)
 
#define ICV_DEF_MINMAXLOC_FUNC_2D(_toggle_, _fin_cast_macro_, flavor,srctype, temptype, extrtype)
 
#define ICV_DEF_MINMAXLOC_FUNC_2D_COI(_toggle_, _fin_cast_macro_, flavor,srctype, temptype, extrtype)
 
#define ICV_DEF_MINMAXLOC_ALL_INT(flavor, srctype,_fin_cast_macro_, extrtype)
 
#define ICV_DEF_MINMAXLOC_ALL_FLT(flavor, srctype, _toggle_,_fin_cast_macro_, extrtype)
 
#define CV_MINMAXLOC_MASK_ENTRY(_toggle_, srctype, temptype, cn)
 
#define ICV_DEF_MINMAXLOC_1D_MASK_CASE_COI(_toggle_, temptype, cn)
 
#define ICV_DEF_MINMAXLOC_MASK_FUNC_2D(_toggle_, _fin_cast_macro_, flavor, srctype, temptype, extrtype)
 
#define ICV_DEF_MINMAXLOC_MASK_FUNC_2D_COI(_toggle_, _fin_cast_macro_,flavor, srctype, temptype, extrtype)
 
#define ICV_DEF_MINMAXLOC_MASK_ALL_INT(flavor, srctype,_fin_cast_macro_, extrtype)
 
#define ICV_DEF_MINMAXLOC_MASK_ALL_FLT(flavor, srctype, _toggle_,_fin_cast_macro_, extrtype)
 
#define icvMinMaxIndx_8s_C1R   0
 
#define icvMinMaxIndx_8s_CnCR   0
 
#define icvMinMaxIndx_8s_C1MR   0
 
#define icvMinMaxIndx_8s_CnCMR   0
 

Functions

CV_INLINE float minmax_to_float (int val)
 
CV_INLINE double minmax_to_double (int64 val)
 
CV_IMPL void cvMinMaxLoc (const void *img, double *_minVal, double *_maxVal, CvPoint *_minLoc, CvPoint *_maxLoc, const void *mask)
 

Macro Definition Documentation

#define CV_MINMAXLOC_ENTRY (   _toggle_,
  srctype,
  temptype,
  cn 
)
Value:
int min_loc = 0, max_loc = 0; \
int x, loc = 0, width = size.width*(cn); \
step /= sizeof(src[0]); \
\
min_val = src[0]; \
min_val = max_val = _toggle_( min_val )
#define CV_MINMAXLOC_EXIT (   _fin_cast_macro_)
Value:
minLoc->x = min_loc; \
maxLoc->x = max_loc; \
minLoc->y = maxLoc->y = 0; \
*minVal = _fin_cast_macro_(min_val); \
*maxVal = _fin_cast_macro_(max_val); \
return CV_OK
#define CV_MINMAXLOC_MASK_ENTRY (   _toggle_,
  srctype,
  temptype,
  cn 
)
Value:
int min_loc = -1, max_loc = -1; \
int x = 0, y, loc = 0, width = size.width; \
step /= sizeof(src[0]); \
if( width*(cn) == step && width == maskStep ) \
{ \
width *= size.height; \
size.height = 1; \
} \
for( y = 0; y < size.height; y++, src += step, \
mask += maskStep ) \
{ \
for( x = 0; x < width; x++, loc++ ) \
if( mask[x] != 0 ) \
{ \
min_loc = max_loc = loc; \
min_val = (src)[x*(cn)]; \
min_val = max_val = _toggle_( min_val ); \
goto stop_scan; \
} \
} \
\
stop_scan:;
#define ICV_DEF_MINMAXLOC_1D_CASE_COI (   _toggle_,
  temptype,
  cn 
)
Value:
for( x = 0; x < width; x += (cn), loc++ ) \
{ \
temptype val = src[x]; \
val = _toggle_(val); \
if( val < min_val ) \
{ \
min_val = val; \
min_loc = loc; \
} \
else if( val > max_val ) \
{ \
max_val = val; \
max_loc = loc; \
} \
}
#define ICV_DEF_MINMAXLOC_1D_MASK_CASE_COI (   _toggle_,
  temptype,
  cn 
)
Value:
for( ; x < width; x++, loc++ ) \
{ \
temptype val = src[x*(cn)]; \
int m = mask[x] != 0; \
val = _toggle_(val); \
if( val < min_val && m ) \
{ \
min_val = val; \
min_loc = loc; \
} \
else if( val > max_val && m ) \
{ \
max_val = val; \
max_loc = loc; \
} \
}
#define ICV_DEF_MINMAXLOC_ALL_FLT (   flavor,
  srctype,
  _toggle_,
  _fin_cast_macro_,
  extrtype 
)
Value:
\
ICV_DEF_MINMAXLOC_FUNC_2D( _toggle_, _fin_cast_macro_, flavor, \
srctype, srctype, extrtype ) \
ICV_DEF_MINMAXLOC_FUNC_2D_COI( _toggle_, _fin_cast_macro_, flavor, \
srctype, srctype, extrtype )
#define ICV_DEF_MINMAXLOC_ALL_INT (   flavor,
  srctype,
  _fin_cast_macro_,
  extrtype 
)
Value:
ICV_DEF_MINMAXLOC_FUNC_2D( CV_NOP, _fin_cast_macro_, flavor,\
srctype, int, extrtype ) \
ICV_DEF_MINMAXLOC_FUNC_2D_COI( CV_NOP, _fin_cast_macro_, \
flavor, srctype, int, extrtype )
#define ICV_DEF_MINMAXLOC_FUNC_2D (   _toggle_,
  _fin_cast_macro_,
  flavor,
  srctype,
  temptype,
  extrtype 
)
Value:
icvMinMaxIndx_##flavor##_C1R,( const srctype* src, int step, CvSize size, \
extrtype* minVal, extrtype* maxVal, CvPoint* minLoc, CvPoint* maxLoc ), \
(src, step, size, minVal, maxVal, minLoc, maxLoc) ) \
{ \
CV_MINMAXLOC_ENTRY( _toggle_, srctype, temptype, 1 ); \
for( ; size.height--; src += step ) \
{ \
ICV_DEF_MINMAXLOC_1D_CASE_COI( _toggle_, temptype, 1 ); \
} \
CV_MINMAXLOC_EXIT( _fin_cast_macro_ ); \
}
#define ICV_DEF_MINMAXLOC_FUNC_2D_COI (   _toggle_,
  _fin_cast_macro_,
  flavor,
  srctype,
  temptype,
  extrtype 
)
Value:
static CvStatus CV_STDCALL \
icvMinMaxIndx_##flavor##_CnCR( const srctype* src, int step, \
CvSize size, int cn, int coi, \
extrtype* minVal, extrtype* maxVal, \
CvPoint* minLoc, CvPoint* maxLoc ) \
{ \
(src) += coi - 1; \
CV_MINMAXLOC_ENTRY( _toggle_, srctype, temptype, cn ); \
for( ; size.height--; src += step ) \
{ \
ICV_DEF_MINMAXLOC_1D_CASE_COI( _toggle_, temptype, cn ); \
} \
CV_MINMAXLOC_EXIT( _fin_cast_macro_ ); \
}
#define ICV_DEF_MINMAXLOC_MASK_ALL_FLT (   flavor,
  srctype,
  _toggle_,
  _fin_cast_macro_,
  extrtype 
)
Value:
ICV_DEF_MINMAXLOC_MASK_FUNC_2D( _toggle_, _fin_cast_macro_, flavor, \
srctype, srctype, extrtype ) \
ICV_DEF_MINMAXLOC_MASK_FUNC_2D_COI( _toggle_, _fin_cast_macro_, flavor, \
srctype, srctype, extrtype )
#define ICV_DEF_MINMAXLOC_MASK_ALL_INT (   flavor,
  srctype,
  _fin_cast_macro_,
  extrtype 
)
Value:
ICV_DEF_MINMAXLOC_MASK_FUNC_2D( CV_NOP, _fin_cast_macro_, flavor, \
srctype, int, extrtype ) \
ICV_DEF_MINMAXLOC_MASK_FUNC_2D_COI( CV_NOP, _fin_cast_macro_, flavor, \
srctype, int, extrtype )
#define ICV_DEF_MINMAXLOC_MASK_FUNC_2D (   _toggle_,
  _fin_cast_macro_,
  flavor,
  srctype,
  temptype,
  extrtype 
)
Value:
icvMinMaxIndx_##flavor##_C1MR,( const srctype* src, int step, \
const uchar* mask, int maskStep, CvSize size, \
extrtype* minVal, extrtype* maxVal, CvPoint* minLoc, CvPoint* maxLoc ), \
( src, step, mask, maskStep, size, minVal, maxVal, minLoc, maxLoc) ) \
{ \
CV_MINMAXLOC_MASK_ENTRY( _toggle_, srctype, temptype, 1 ); \
for( ; y < size.height; y++, src += step, mask += maskStep ) \
{ \
ICV_DEF_MINMAXLOC_1D_MASK_CASE_COI( _toggle_, temptype, 1 ) \
x = 0; \
} \
CV_MINMAXLOC_EXIT( _fin_cast_macro_ ); \
}
#define ICV_DEF_MINMAXLOC_MASK_FUNC_2D_COI (   _toggle_,
  _fin_cast_macro_,
  flavor,
  srctype,
  temptype,
  extrtype 
)
Value:
static CvStatus CV_STDCALL \
icvMinMaxIndx_##flavor##_CnCMR( const srctype* src, int step, \
const uchar* mask, int maskStep, CvSize size, int cn, int coi, \
extrtype* minVal, extrtype* maxVal, CvPoint* minLoc, CvPoint* maxLoc ) \
{ \
(src) += coi - 1; \
CV_MINMAXLOC_MASK_ENTRY( _toggle_, srctype, temptype, cn ); \
for( ; y < size.height; y++, src += step, mask += maskStep ) \
{ \
ICV_DEF_MINMAXLOC_1D_MASK_CASE_COI( _toggle_, temptype, cn ) \
x = 0; \
} \
CV_MINMAXLOC_EXIT( _fin_cast_macro_ ); \
}
#define icvMinMaxIndx_8s_C1MR   0
#define icvMinMaxIndx_8s_C1R   0
#define icvMinMaxIndx_8s_CnCMR   0
#define icvMinMaxIndx_8s_CnCR   0

Function Documentation

CV_IMPL void cvMinMaxLoc ( const void *  img,
double _minVal,
double _maxVal,
CvPoint _minLoc,
CvPoint _maxLoc,
const void *  mask 
)
CV_INLINE double minmax_to_double ( int64  val)
CV_INLINE float minmax_to_float ( int  val)