44 #ifndef __OPENCV_CORE_C_H__
45 #define __OPENCV_CORE_C_H__
61 CVAPI(
void*)
cvAlloc(
size_t size );
69 CVAPI(
void)
cvFree_(
void* ptr );
70 #define cvFree(ptr) (cvFree_(*(ptr)), *(ptr)=0)
78 int align CV_DEFAULT(4));
111 #define CV_AUTOSTEP 0x7fffffff
115 int type,
void* data CV_DEFAULT(NULL),
174 #define cvGetSubArr cvGetSubRect
179 int start_row,
int end_row,
180 int delta_row CV_DEFAULT(1));
184 return cvGetRows( arr, submat, row, row + 1, 1 );
191 int start_col,
int end_col );
195 return cvGetCols( arr, submat, col, col + 1 );
203 int diag CV_DEFAULT(0));
207 int extend_to_12 CV_DEFAULT(0) );
219 int type,
void* data CV_DEFAULT(NULL) );
247 if( mat_iterator->node->next )
248 return mat_iterator->node = mat_iterator->node->
next;
252 for( idx = ++mat_iterator->curidx; idx < mat_iterator->mat->hashsize; idx++ )
257 mat_iterator->curidx = idx;
258 return mat_iterator->node = node;
267 #define CV_MAX_ARR 10
281 #define CV_NO_DEPTH_CHECK 1
282 #define CV_NO_CN_CHECK 2
283 #define CV_NO_SIZE_CHECK 4
291 int flags CV_DEFAULT(0) );
303 CVAPI(
int)
cvGetDims( const
CvArr* arr,
int* sizes CV_DEFAULT(NULL) );
315 CVAPI(
uchar*)
cvPtr2D( const
CvArr* arr,
int idx0,
int idx1,
int* type CV_DEFAULT(NULL) );
317 int* type CV_DEFAULT(NULL));
323 CVAPI(
uchar*)
cvPtrND( const
CvArr* arr, const
int* idx,
int* type CV_DEFAULT(NULL),
324 int create_node CV_DEFAULT(1),
325 unsigned* precalc_hashval CV_DEFAULT(NULL));
336 CVAPI(
double)
cvGetReal3D( const
CvArr* arr,
int idx0,
int idx1,
int idx2 );
349 int idx1,
int idx2,
double value );
362 int* coi CV_DEFAULT(NULL),
363 int allowND CV_DEFAULT(0));
380 int sizeof_header,
CvArr* header,
381 int new_cn,
int new_dims,
int* new_sizes );
383 #define cvReshapeND( arr, header, new_cn, new_dims, new_sizes ) \
384 cvReshapeMatND( (arr), sizeof(*(header)), (header), \
385 (new_cn), (new_dims), (new_sizes))
388 int new_cn,
int new_rows CV_DEFAULT(0) );
409 int* step CV_DEFAULT(NULL),
410 CvSize* roi_size CV_DEFAULT(NULL));
417 const
CvArr* mask CV_DEFAULT(NULL) );
422 const
CvArr* mask CV_DEFAULT(NULL) );
426 #define cvZero cvSetZero
443 CvArr** dst,
int dst_count,
444 const
int* from_to,
int pair_count );
452 double scale CV_DEFAULT(1),
453 double shift CV_DEFAULT(0) );
454 #define cvCvtScale cvConvertScale
455 #define cvScale cvConvertScale
456 #define cvConvert( src, dst ) cvConvertScale( (src), (dst), 1, 0 )
465 double scale CV_DEFAULT(1),
466 double shift CV_DEFAULT(0) );
467 #define cvCvtScaleAbs cvConvertScaleAbs
476 int default_max_iters );
484 const
CvArr* mask CV_DEFAULT(NULL));
488 const
CvArr* mask CV_DEFAULT(NULL));
492 const
CvArr* mask CV_DEFAULT(NULL));
496 const
CvArr* mask CV_DEFAULT(NULL))
498 cvAddS( src,
cvScalar( -value.val[0], -value.val[1], -value.val[2], -value.val[3]),
504 const
CvArr* mask CV_DEFAULT(NULL));
520 #define cvAXPY( A, real_scalar, B, C ) cvScaleAdd(A, cvRealScalar(real_scalar), B, C)
524 const
CvArr* src2,
double beta,
525 double gamma,
CvArr* dst );
532 CvArr* dst, const
CvArr* mask CV_DEFAULT(NULL));
536 CvArr* dst, const
CvArr* mask CV_DEFAULT(NULL));
540 CvArr* dst, const
CvArr* mask CV_DEFAULT(NULL));
544 CvArr* dst, const
CvArr* mask CV_DEFAULT(NULL));
548 CvArr* dst, const
CvArr* mask CV_DEFAULT(NULL));
552 CvArr* dst, const
CvArr* mask CV_DEFAULT(NULL));
579 CVAPI(
void)
cvCmpS( const
CvArr* src,
double value,
CvArr* dst,
int cmp_op );
598 #define cvAbs( src, dst ) cvAbsDiffS( (src), (dst), cvScalarAll(0))
608 int angle_in_degrees CV_DEFAULT(0));
615 int angle_in_degrees CV_DEFAULT(0));
635 CVAPI(
float)
cvCbrt(
float value );
641 #define CV_CHECK_RANGE 1
642 #define CV_CHECK_QUIET 2
644 double min_val CV_DEFAULT(0),
double max_val CV_DEFAULT(0));
645 #define cvCheckArray cvCheckArr
647 #define CV_RAND_UNI 0
648 #define CV_RAND_NORMAL 1
653 double iter_factor CV_DEFAULT(1.));
655 #define CV_SORT_EVERY_ROW 0
656 #define CV_SORT_EVERY_COLUMN 1
657 #define CV_SORT_ASCENDING 0
658 #define CV_SORT_DESCENDING 16
661 CvArr* idxmat CV_DEFAULT(NULL),
662 int flags CV_DEFAULT(0));
669 int maxiter CV_DEFAULT(20),
int fig CV_DEFAULT(100));
679 #define cvMatMulAdd( src1, src2, src3, dst ) cvGEMM( (src1), (src2), 1., (src3), 1., (dst), 0 )
680 #define cvMatMul( src1, src2, dst ) cvMatMulAdd( (src1), (src2), NULL, (dst))
682 #define CV_GEMM_A_T 1
683 #define CV_GEMM_B_T 2
684 #define CV_GEMM_C_T 4
689 int tABC CV_DEFAULT(0));
690 #define cvMatMulAddEx cvGEMM
695 const
CvMat* transmat,
696 const
CvMat* shiftvec CV_DEFAULT(NULL));
697 #define cvMatMulAddS cvTransform
706 double scale CV_DEFAULT(1.) );
710 #define cvT cvTranspose
719 int flip_mode CV_DEFAULT(0));
720 #define cvMirror cvFlip
723 #define CV_SVD_MODIFY_A 1
729 CvArr* V CV_DEFAULT(NULL),
int flags CV_DEFAULT(0));
740 #define CV_CHOLESKY 3
747 #define cvInv cvInvert
752 int method CV_DEFAULT(CV_LU));
762 double eps CV_DEFAULT(0),
763 int lowindex CV_DEFAULT(-1),
764 int highindex CV_DEFAULT(-1));
778 #define CV_COVAR_SCRAMBLED 0
781 #define CV_COVAR_NORMAL 1
785 #define CV_COVAR_USE_AVG 2
788 #define CV_COVAR_SCALE 4
791 #define CV_COVAR_ROWS 8
794 #define CV_COVAR_COLS 16
799 #define CV_PCA_DATA_AS_ROW 0
800 #define CV_PCA_DATA_AS_COL 1
801 #define CV_PCA_USE_AVG 2
803 CvArr* eigenvals,
CvArr* eigenvects,
int flags );
813 #define cvMahalonobis cvMahalanobis
830 const
CvArr* mask CV_DEFAULT(NULL) );
833 CVAPI(
void)
cvMinMaxLoc( const
CvArr* arr,
double* min_val,
double* max_val,
834 CvPoint* min_loc CV_DEFAULT(NULL),
835 CvPoint* max_loc CV_DEFAULT(NULL),
836 const
CvArr* mask CV_DEFAULT(NULL) );
842 #define CV_NORM_MASK 7
843 #define CV_RELATIVE 8
847 #define CV_DIFF_C (CV_DIFF | CV_C)
848 #define CV_DIFF_L1 (CV_DIFF | CV_L1)
849 #define CV_DIFF_L2 (CV_DIFF | CV_L2)
850 #define CV_RELATIVE_C (CV_RELATIVE | CV_C)
851 #define CV_RELATIVE_L1 (CV_RELATIVE | CV_L1)
852 #define CV_RELATIVE_L2 (CV_RELATIVE | CV_L2)
855 CVAPI(
double)
cvNorm( const
CvArr* arr1, const
CvArr* arr2 CV_DEFAULT(NULL),
856 int norm_type CV_DEFAULT(
CV_L2),
857 const
CvArr* mask CV_DEFAULT(NULL) );
860 double a CV_DEFAULT(1.),
double b CV_DEFAULT(0.),
861 int norm_type CV_DEFAULT(CV_L2),
862 const
CvArr* mask CV_DEFAULT(NULL) );
865 #define CV_REDUCE_SUM 0
866 #define CV_REDUCE_AVG 1
867 #define CV_REDUCE_MAX 2
868 #define CV_REDUCE_MIN 3
877 #define CV_DXT_FORWARD 0
878 #define CV_DXT_INVERSE 1
879 #define CV_DXT_SCALE 2
880 #define CV_DXT_INV_SCALE (CV_DXT_INVERSE + CV_DXT_SCALE)
881 #define CV_DXT_INVERSE_SCALE CV_DXT_INV_SCALE
882 #define CV_DXT_ROWS 4
883 #define CV_DXT_MUL_CONJ 8
890 int nonzero_rows CV_DEFAULT(0) );
895 CvArr* dst,
int flags );
943 int len CV_DEFAULT(-1) );
963 CVAPI(
void)
cvSeqPop(
CvSeq* seq,
void* element CV_DEFAULT(NULL));
974 int count,
int in_front CV_DEFAULT(0) );
978 int count,
int in_front CV_DEFAULT(0) );
983 const
void* element CV_DEFAULT(NULL));
1029 int reverse CV_DEFAULT(0) );
1039 int is_relative CV_DEFAULT(0));
1049 int elem_size,
void* elements,
int total,
1055 int copy_data CV_DEFAULT(0));
1059 return cvSeqSlice( seq, CV_WHOLE_SEQ, storage, 1 );
1076 int is_sorted,
int* elem_idx,
1077 void* userdata CV_DEFAULT(NULL) );
1097 CvSetElem** inserted_elem CV_DEFAULT(NULL) );
1102 CvSetElem* elem = set_header->free_elems;
1105 set_header->free_elems = elem->next_free;
1107 set_header->active_count++;
1118 assert( _elem->flags >= 0 );
1119 _elem->next_free = set_header->free_elems;
1121 set_header->free_elems = _elem;
1122 set_header->active_count--;
1141 int vtx_size,
int edge_size,
1146 CvGraphVtx** inserted_vtx CV_DEFAULT(NULL) );
1159 int start_idx,
int end_idx,
1178 #define cvGraphFindEdge cvFindGraphEdge
1179 #define cvGraphFindEdgeByPtr cvFindGraphEdgeByPtr
1191 #define cvGetGraphVtx( graph, idx ) (CvGraphVtx*)cvGetSetElem((CvSet*)(graph), (idx))
1194 #define cvGraphVtxIdx( graph, vtx ) ((vtx)->flags & CV_SET_ELEM_IDX_MASK)
1197 #define cvGraphEdgeIdx( graph, edge ) ((edge)->flags & CV_SET_ELEM_IDX_MASK)
1199 #define cvGraphGetVtxCount( graph ) ((graph)->active_count)
1200 #define cvGraphGetEdgeCount( graph ) ((graph)->edges->active_count)
1202 #define CV_GRAPH_VERTEX 1
1203 #define CV_GRAPH_TREE_EDGE 2
1204 #define CV_GRAPH_BACK_EDGE 4
1205 #define CV_GRAPH_FORWARD_EDGE 8
1206 #define CV_GRAPH_CROSS_EDGE 16
1207 #define CV_GRAPH_ANY_EDGE 30
1208 #define CV_GRAPH_NEW_TREE 32
1209 #define CV_GRAPH_BACKTRACKING 64
1210 #define CV_GRAPH_OVER -1
1212 #define CV_GRAPH_ALL_ITEMS -1
1215 #define CV_GRAPH_ITEM_VISITED_FLAG (1 << 30)
1216 #define CV_IS_GRAPH_VERTEX_VISITED(vtx) \
1217 (((CvGraphVtx*)(vtx))->flags & CV_GRAPH_ITEM_VISITED_FLAG)
1218 #define CV_IS_GRAPH_EDGE_VISITED(edge) \
1219 (((CvGraphEdge*)(edge))->flags & CV_GRAPH_ITEM_VISITED_FLAG)
1220 #define CV_GRAPH_SEARCH_TREE_NODE_FLAG (1 << 29)
1221 #define CV_GRAPH_FORWARD_EDGE_FLAG (1 << 28)
1264 #define CV_RGB( r, g, b ) cvScalar( (b), (g), (r), 0 )
1265 #define CV_FILLED -1
1271 CvScalar color,
int thickness CV_DEFAULT(1),
1272 int line_type CV_DEFAULT(8),
int shift CV_DEFAULT(0) );
1277 CvScalar color,
int thickness CV_DEFAULT(1),
1278 int line_type CV_DEFAULT(8),
1279 int shift CV_DEFAULT(0));
1283 CvScalar color,
int thickness CV_DEFAULT(1),
1284 int line_type CV_DEFAULT(8),
1285 int shift CV_DEFAULT(0));
1291 CvScalar color,
int thickness CV_DEFAULT(1),
1292 int line_type CV_DEFAULT(8),
int shift CV_DEFAULT(0));
1298 double angle,
double start_angle,
double end_angle,
1299 CvScalar color,
int thickness CV_DEFAULT(1),
1300 int line_type CV_DEFAULT(8),
int shift CV_DEFAULT(0));
1303 int thickness CV_DEFAULT(1),
1304 int line_type CV_DEFAULT(8),
int shift CV_DEFAULT(0) )
1311 0, 360, color, thickness, line_type, shift );
1316 int line_type CV_DEFAULT(8),
int shift CV_DEFAULT(0));
1321 int line_type CV_DEFAULT(8),
int shift CV_DEFAULT(0) );
1325 int is_closed,
CvScalar color,
int thickness CV_DEFAULT(1),
1326 int line_type CV_DEFAULT(8),
int shift CV_DEFAULT(0) );
1328 #define cvDrawRect cvRectangle
1329 #define cvDrawLine cvLine
1330 #define cvDrawCircle cvCircle
1331 #define cvDrawEllipse cvEllipse
1332 #define cvDrawPolyLine cvPolyLine
1344 int connectivity CV_DEFAULT(8),
1345 int left_to_right CV_DEFAULT(0));
1348 #define CV_NEXT_LINE_POINT( line_iterator ) \
1350 int _line_iterator_mask = (line_iterator).err < 0 ? -1 : 0; \
1351 (line_iterator).err += (line_iterator).minus_delta + \
1352 ((line_iterator).plus_delta & _line_iterator_mask); \
1353 (line_iterator).ptr += (line_iterator).minus_step + \
1354 ((line_iterator).plus_step & _line_iterator_mask); \
1359 #define CV_FONT_HERSHEY_SIMPLEX 0
1360 #define CV_FONT_HERSHEY_PLAIN 1
1361 #define CV_FONT_HERSHEY_DUPLEX 2
1362 #define CV_FONT_HERSHEY_COMPLEX 3
1363 #define CV_FONT_HERSHEY_TRIPLEX 4
1364 #define CV_FONT_HERSHEY_COMPLEX_SMALL 5
1365 #define CV_FONT_HERSHEY_SCRIPT_SIMPLEX 6
1366 #define CV_FONT_HERSHEY_SCRIPT_COMPLEX 7
1369 #define CV_FONT_ITALIC 16
1371 #define CV_FONT_VECTOR0 CV_FONT_HERSHEY_SIMPLEX
1393 double hscale,
double vscale,
1394 double shear CV_DEFAULT(0),
1395 int thickness CV_DEFAULT(1),
1396 int line_type CV_DEFAULT(8));
1412 CvSize* text_size,
int* baseline );
1428 int angle,
int arc_start,
int arc_end,
CvPoint * pts,
int delta );
1433 int max_level,
int thickness CV_DEFAULT(1),
1434 int line_type CV_DEFAULT(8),
1452 const
void* first,
int max_level );
1471 #define CV_KMEANS_USE_INITIAL_LABELS 1
1474 CvRNG* rng CV_DEFAULT(0),
int flags CV_DEFAULT(0),
1475 CvArr* _centers CV_DEFAULT(0),
double* compactness CV_DEFAULT(0) );
1489 const
char** version,
1490 const
char** loaded_addon_plugins );
1499 void* userdata CV_DEFAULT(NULL));
1503 (
int,
int,
int,
char*,
char*,
int,
int,
int,
int,
int,
1517 #define CV_TURN_ON_IPL_COMPATIBILITY() \
1518 cvSetIPLAllocators( iplCreateImageHeader, iplAllocateImage, \
1519 iplDeallocate, iplCreateROI, iplCloneImage )
1540 int struct_flags, const
char* type_name CV_DEFAULT(NULL),
1554 const
char* str,
int quote CV_DEFAULT(0) );
1563 CvAttrList attributes CV_DEFAULT(cvAttrList()));
1570 int len, const
char* dt );
1575 int len CV_DEFAULT(-1),
1576 int create_missing CV_DEFAULT(0));
1581 int stream_index CV_DEFAULT(0) );
1587 int create_missing CV_DEFAULT(0) );
1596 return !node ? default_value :
1603 const char* name,
int default_value
CV_DEFAULT(0) )
1611 return !node ? default_value :
1618 const char* name,
double default_value
CV_DEFAULT(0.) )
1632 const char* name,
const char* default_value
CV_DEFAULT(NULL) )
1644 const
char* name,
CvAttrList* attributes CV_DEFAULT(NULL) )
1656 int count,
void* dst, const
char* dt );
1660 void* dst, const
char* dt );
1678 CVAPI(
void)
cvRelease(
void** struct_ptr );
1679 CVAPI(
void*)
cvClone( const
void* struct_ptr );
1682 CVAPI(
void)
cvSave( const
char* filename, const
void* struct_ptr,
1683 const
char* name CV_DEFAULT(NULL),
1684 const
char* comment CV_DEFAULT(NULL),
1686 CVAPI(
void*)
cvLoad( const
char* filename,
1688 const
char* name CV_DEFAULT(NULL),
1689 const
char** real_name CV_DEFAULT(NULL) );
1700 #define CV_CPU_NONE 0
1701 #define CV_CPU_MMX 1
1702 #define CV_CPU_SSE 2
1703 #define CV_CPU_SSE2 3
1704 #define CV_CPU_SSE3 4
1705 #define CV_CPU_SSSE3 5
1706 #define CV_CPU_SSE4_1 6
1707 #define CV_CPU_SSE4_2 7
1708 #define CV_CPU_AVX 10
1709 #define CV_HARDWARE_MAX_FEATURE 255
1730 #define CV_ErrModeLeaf 0
1731 #define CV_ErrModeParent 1
1732 #define CV_ErrModeSilent 2
1743 CVAPI(
void)
cvError(
int status, const
char* func_name,
1744 const
char* err_msg, const
char* file_name,
int line );
1750 CVAPI(
int)
cvGetErrInfo( const
char** errcode_desc, const
char** description,
1751 const
char** filename,
int* line );
1757 const
char* err_msg, const
char* file_name,
int line,
void* userdata );
1761 void* userdata CV_DEFAULT(NULL),
1762 void** prev_userdata CV_DEFAULT(NULL) );
1770 CVAPI(
int)
cvNulDevReport(
int status, const
char* func_name, const
char* err_msg,
1771 const
char* file_name,
int line,
void* userdata );
1773 CVAPI(
int)
cvStdErrReport(
int status, const
char* func_name, const
char* err_msg,
1774 const
char* file_name,
int line,
void* userdata );
1776 CVAPI(
int)
cvGuiBoxReport(
int status, const
char* func_name, const
char* err_msg,
1777 const
char* file_name,
int line,
void* userdata );
1779 #define OPENCV_ERROR(status,func,context) \
1780 cvError((status),(func),(context),__FILE__,__LINE__)
1782 #define OPENCV_ERRCHK(func,context) \
1783 {if (cvGetErrStatus() >= 0) \
1784 {OPENCV_ERROR(CV_StsBackTrace,(func),(context));}}
1786 #define OPENCV_ASSERT(expr,func,context) \
1788 {OPENCV_ERROR(CV_StsInternal,(func),(context));}}
1790 #define OPENCV_RSTERR() (cvSetErrStatus(CV_StsOk))
1792 #define OPENCV_CALL( Func ) \
1799 #ifdef CV_NO_FUNC_NAMES
1800 #define CV_FUNCNAME( Name )
1801 #define cvFuncName ""
1803 #define CV_FUNCNAME( Name ) \
1804 static char cvFuncName[] = Name
1812 #define CV_ERROR( Code, Msg ) \
1814 cvError( (Code), cvFuncName, Msg, __FILE__, __LINE__ ); \
1819 #define CV_ERROR_FROM_CODE( code ) \
1820 CV_ERROR( code, "" )
1827 #define CV_CHECK() \
1829 if( cvGetErrStatus() < 0 ) \
1830 CV_ERROR( CV_StsBackTrace, "Inner function failed." ); \
1839 #define CV_CALL( Func ) \
1847 #define CV_ASSERT( Condition ) \
1849 if( !(Condition) ) \
1850 CV_ERROR( CV_StsInternal, "Assertion: " #Condition " failed" ); \
1853 #define __CV_BEGIN__ {
1854 #define __CV_END__ goto exit; exit: ; }
1855 #define __CV_EXIT__ goto exit
1873 CvType(
const char* type_name,