]> rtime.felk.cvut.cz Git - opencv.git/blobdiff - opencv/include/opencv/cxcore.h
removed unused CV_CPU_SSE_ANY (ticket #255)
[opencv.git] / opencv / include / opencv / cxcore.h
index c23c670a3317ec3e26cedcab30acbf318b843237..547149578806632a7ccce55e58ee980af710116b 100644 (file)
@@ -41,8 +41,8 @@
 //M*/\r
 \r
 \r
-#ifndef _CXCORE_H_\r
-#define _CXCORE_H_\r
+#ifndef __OPENCV_CORE_H__\r
+#define __OPENCV_CORE_H__\r
 \r
 #ifdef __IPL_H__\r
 #define HAVE_IPL\r
@@ -783,8 +783,14 @@ CVAPI(double) cvDet( const CvArr* mat );
 CVAPI(CvScalar) cvTrace( const CvArr* mat );\r
 \r
 /* Finds eigen values and vectors of a symmetric matrix */\r
-CVAPI(void)  cvEigenVV( CvArr* mat, CvArr* evects,\r
-                        CvArr* evals, double eps CV_DEFAULT(0));\r
+CVAPI(void)  cvEigenVV( CvArr* mat, CvArr* evects, CvArr* evals,\r
+                        double eps CV_DEFAULT(0),\r
+                        int lowindex CV_DEFAULT(-1),\r
+                        int highindex CV_DEFAULT(-1));\r
+\r
+///* Finds selected eigen values and vectors of a symmetric matrix */\r
+//CVAPI(void)  cvSelectedEigenVV( CvArr* mat, CvArr* evects, CvArr* evals,\r
+//                                int lowindex, int highindex );\r
 \r
 /* Makes an identity matrix (mat_ij = i == j) */\r
 CVAPI(void)  cvSetIdentity( CvArr* mat, CvScalar value CV_DEFAULT(cvRealScalar(1)) );\r
@@ -993,7 +999,7 @@ CVAPI(void)  cvSeqPushMulti( CvSeq* seq, const void* elements,
                              int count, int in_front CV_DEFAULT(0) );\r
 \r
 /* Removes several elements from the end of sequence and optionally saves them */\r
-CVAPI(void)  cvSeqPopMulti( CvSeq* seq, const void* elements,\r
+CVAPI(void)  cvSeqPopMulti( CvSeq* seq, void* elements,\r
                             int count, int in_front CV_DEFAULT(0) );\r
 \r
 /* Inserts a new element in the middle of sequence.\r
@@ -1297,6 +1303,13 @@ CVAPI(void)  cvRectangle( CvArr* img, CvPoint pt1, CvPoint pt2,
                           int line_type CV_DEFAULT(8),\r
                           int shift CV_DEFAULT(0));\r
 \r
+/* Draws a rectangle specified by a CvRect structure */\r
+CVAPI(void)  cvRectangleR( CvArr* img, CvRect r,\r
+                           CvScalar color, int thickness CV_DEFAULT(1),\r
+                           int line_type CV_DEFAULT(8),\r
+                           int shift CV_DEFAULT(0));\r
+    \r
+    \r
 /* Draws a circle with specified center and radius.\r
    Thickness works in the same way as with cvRectangle */\r
 CVAPI(void)  cvCircle( CvArr* img, CvPoint center, int radius,\r
@@ -1316,23 +1329,24 @@ CV_INLINE  void  cvEllipseBox( CvArr* img, CvBox2D box, CvScalar color,
                                int line_type CV_DEFAULT(8), int shift CV_DEFAULT(0) )\r
 {\r
     CvSize axes;\r
-    axes.width = cvRound(box.size.height*0.5);\r
-    axes.height = cvRound(box.size.width*0.5);\r
+    axes.width = cvRound(box.size.width*0.5);\r
+    axes.height = cvRound(box.size.height*0.5);\r
 \r
     cvEllipse( img, cvPointFrom32f( box.center ), axes, box.angle,\r
                0, 360, color, thickness, line_type, shift );\r
 }\r
 \r
 /* Fills convex or monotonous polygon. */\r
-CVAPI(void)  cvFillConvexPoly( CvArr* img, CvPoint* pts, int npts, CvScalar color,\r
+CVAPI(void)  cvFillConvexPoly( CvArr* img, const CvPoint* pts, int npts, CvScalar color,\r
                                int line_type CV_DEFAULT(8), int shift CV_DEFAULT(0));\r
 \r
 /* Fills an area bounded by one or more arbitrary polygons */\r
-CVAPI(void)  cvFillPoly( CvArr* img, CvPoint** pts, int* npts, int contours, CvScalar color,\r
+CVAPI(void)  cvFillPoly( CvArr* img, CvPoint** pts, const int* npts,\r
+                         int contours, CvScalar color,\r
                          int line_type CV_DEFAULT(8), int shift CV_DEFAULT(0) );\r
 \r
 /* Draws one or more polygonal curves */\r
-CVAPI(void)  cvPolyLine( CvArr* img, CvPoint** pts, int* npts, int contours,\r
+CVAPI(void)  cvPolyLine( CvArr* img, CvPoint** pts, const int* npts, int contours,\r
                          int is_closed, CvScalar color, int thickness CV_DEFAULT(1),\r
                          int line_type CV_DEFAULT(8), int shift CV_DEFAULT(0) );\r
 \r
@@ -1756,6 +1770,21 @@ CVAPI(void*) cvLoad( const char* filename,
 CVAPI(int64)  cvGetTickCount( void );\r
 CVAPI(double) cvGetTickFrequency( void );\r
 \r
+/*********************************** CPU capabilities ***********************************/\r
+\r
+#define CV_CPU_NONE    0    \r
+#define CV_CPU_MMX     1\r
+#define CV_CPU_SSE     2\r
+#define CV_CPU_SSE2    3\r
+#define CV_CPU_SSE3    4\r
+#define CV_CPU_SSSE3   5\r
+#define CV_CPU_SSE4_1  6\r
+#define CV_CPU_SSE4_2  7\r
+#define CV_CPU_AVX    10\r
+#define CV_HARDWARE_MAX_FEATURE 255\r
+\r
+CVAPI(int) cvCheckHardwareSupport(int feature);\r
+\r
 /*********************************** Multi-Threading ************************************/\r
 \r
 /* retrieve/set the number of threads used in OpenMP implementations */\r
@@ -1763,330 +1792,11 @@ CVAPI(int)  cvGetNumThreads( void );
 CVAPI(void) cvSetNumThreads( int threads CV_DEFAULT(0) );\r
 /* get index of the thread being executed */\r
 CVAPI(int)  cvGetThreadNum( void );\r
-\r
-/*************** Convenience functions for better interaction with HighGUI **************/\r
-\r
-typedef IplImage* (CV_CDECL * CvLoadImageFunc)( const char* filename, int colorness );\r
-typedef CvMat* (CV_CDECL * CvLoadImageMFunc)( const char* filename, int colorness );\r
-typedef int (CV_CDECL * CvSaveImageFunc)( const char* filename, const CvArr* image,\r
-                                          const int* params );\r
-typedef void (CV_CDECL * CvShowImageFunc)( const char* windowname, const CvArr* image );\r
-\r
-CVAPI(int) cvSetImageIOFunctions( CvLoadImageFunc _load_image, CvLoadImageMFunc _load_image_m,\r
-                            CvSaveImageFunc _save_image, CvShowImageFunc _show_image );\r
-\r
-#define CV_SET_IMAGE_IO_FUNCTIONS() \\r
-    cvSetImageIOFunctions( cvLoadImage, cvLoadImageM, cvSaveImage, cvShowImage )\r
+    \r
 \r
 #ifdef __cplusplus\r
 }\r
 \r
-class CV_EXPORTS CvImage\r
-{\r
-public:\r
-    CvImage() : image(0), refcount(0) {}\r
-    CvImage( CvSize size, int depth, int channels )\r
-    {\r
-        image = cvCreateImage( size, depth, channels );\r
-        refcount = image ? new int(1) : 0;\r
-    }\r
-\r
-    CvImage( IplImage* img ) : image(img)\r
-    {\r
-        refcount = image ? new int(1) : 0;\r
-    }\r
-\r
-    CvImage( const CvImage& img ) : image(img.image), refcount(img.refcount)\r
-    {\r
-        if( refcount ) ++(*refcount);\r
-    }\r
-\r
-    CvImage( const char* filename, const char* imgname=0, int color=-1 ) : image(0), refcount(0)\r
-    { load( filename, imgname, color ); }\r
-\r
-    CvImage( CvFileStorage* fs, const char* mapname, const char* imgname ) : image(0), refcount(0)\r
-    { read( fs, mapname, imgname ); }\r
-\r
-    CvImage( CvFileStorage* fs, const char* seqname, int idx ) : image(0), refcount(0)\r
-    { read( fs, seqname, idx ); }\r
-\r
-    ~CvImage()\r
-    {\r
-        if( refcount && !(--*refcount) )\r
-        {\r
-            cvReleaseImage( &image );\r
-            delete refcount;\r
-        }\r
-    }\r
-\r
-    CvImage clone() { return CvImage(image ? cvCloneImage(image) : 0); }\r
-\r
-    void create( CvSize size, int depth, int channels )\r
-    {\r
-        if( !image || !refcount ||\r
-            image->width != size.width || image->height != size.height ||\r
-            image->depth != depth || image->nChannels != channels )\r
-            attach( cvCreateImage( size, depth, channels ));\r
-    }\r
-\r
-    void release() { detach(); }\r
-    void clear() { detach(); }\r
-\r
-    void attach( IplImage* img, bool use_refcount=true )\r
-    {\r
-        if( refcount && --*refcount == 0 )\r
-        {\r
-            cvReleaseImage( &image );\r
-            delete refcount;\r
-        }\r
-        image = img;\r
-        refcount = use_refcount && image ? new int(1) : 0;\r
-    }\r
-\r
-    void detach()\r
-    {\r
-        if( refcount && --*refcount == 0 )\r
-        {\r
-            cvReleaseImage( &image );\r
-            delete refcount;\r
-        }\r
-        image = 0;\r
-        refcount = 0;\r
-    }\r
-\r
-    bool load( const char* filename, const char* imgname=0, int color=-1 );\r
-    bool read( CvFileStorage* fs, const char* mapname, const char* imgname );\r
-    bool read( CvFileStorage* fs, const char* seqname, int idx );\r
-    void save( const char* filename, const char* imgname, const int* params=0 );\r
-    void write( CvFileStorage* fs, const char* imgname );\r
-\r
-    void show( const char* window_name );\r
-    bool is_valid() { return image != 0; }\r
-\r
-    int width() const { return image ? image->width : 0; }\r
-    int height() const { return image ? image->height : 0; }\r
-\r
-    CvSize size() const { return image ? cvSize(image->width, image->height) : cvSize(0,0); }\r
-\r
-    CvSize roi_size() const\r
-    {\r
-        return !image ? cvSize(0,0) :\r
-            !image->roi ? cvSize(image->width,image->height) :\r
-            cvSize(image->roi->width, image->roi->height);\r
-    }\r
-\r
-    CvRect roi() const\r
-    {\r
-        return !image ? cvRect(0,0,0,0) :\r
-            !image->roi ? cvRect(0,0,image->width,image->height) :\r
-            cvRect(image->roi->xOffset,image->roi->yOffset,\r
-                   image->roi->width,image->roi->height);\r
-    }\r
-\r
-    int coi() const { return !image || !image->roi ? 0 : image->roi->coi; }\r
-\r
-    void set_roi(CvRect roi) { cvSetImageROI(image,roi); }\r
-    void reset_roi() { cvResetImageROI(image); }\r
-    void set_coi(int coi) { cvSetImageCOI(image,coi); }\r
-    int depth() const { return image ? image->depth : 0; }\r
-    int channels() const { return image ? image->nChannels : 0; }\r
-    int pix_size() const { return image ? ((image->depth & 255)>>3)*image->nChannels : 0; }\r
-\r
-    uchar* data() { return image ? (uchar*)image->imageData : 0; }\r
-    const uchar* data() const { return image ? (const uchar*)image->imageData : 0; }\r
-    int step() const { return image ? image->widthStep : 0; }\r
-    int origin() const { return image ? image->origin : 0; }\r
-\r
-    uchar* roi_row(int y)\r
-    {\r
-        assert(0<=y);\r
-        assert(!image ?\r
-                1 : image->roi ?\r
-                y<image->roi->height : y<image->height);\r
-        \r
-        return !image ? 0 :\r
-            !image->roi ?\r
-                (uchar*)(image->imageData + y*image->widthStep) :\r
-                (uchar*)(image->imageData + (y+image->roi->yOffset)*image->widthStep +\r
-                image->roi->xOffset*((image->depth & 255)>>3)*image->nChannels);\r
-    }\r
-\r
-    const uchar* roi_row(int y) const\r
-    {\r
-        assert(0<=y);\r
-        assert(!image ?\r
-                1 : image->roi ?\r
-                y<image->roi->height : y<image->height); \r
-\r
-        return !image ? 0 :\r
-            !image->roi ?\r
-                (const uchar*)(image->imageData + y*image->widthStep) :\r
-                (const uchar*)(image->imageData + (y+image->roi->yOffset)*image->widthStep +\r
-                image->roi->xOffset*((image->depth & 255)>>3)*image->nChannels);\r
-    }\r
-\r
-    operator const IplImage* () const { return image; }\r
-    operator IplImage* () { return image; }\r
-\r
-    CvImage& operator = (const CvImage& img)\r
-    {\r
-        if( img.refcount )\r
-            ++*img.refcount;\r
-        if( refcount && !(--*refcount) )\r
-            cvReleaseImage( &image );\r
-        image=img.image;\r
-        refcount=img.refcount;\r
-        return *this;\r
-    }\r
-\r
-protected:\r
-    IplImage* image;\r
-    int* refcount;\r
-};\r
-\r
-\r
-class CV_EXPORTS CvMatrix\r
-{\r
-public:\r
-    CvMatrix() : matrix(0) {}\r
-    CvMatrix( int rows, int cols, int type )\r
-    { matrix = cvCreateMat( rows, cols, type ); }\r
-\r
-    CvMatrix( int rows, int cols, int type, CvMat* hdr,\r
-              void* data=0, int step=CV_AUTOSTEP )\r
-    { matrix = cvInitMatHeader( hdr, rows, cols, type, data, step ); }\r
-\r
-    CvMatrix( int rows, int cols, int type, CvMemStorage* storage, bool alloc_data=true );\r
-\r
-    CvMatrix( int rows, int cols, int type, void* data, int step=CV_AUTOSTEP )\r
-    { matrix = cvCreateMatHeader( rows, cols, type );\r
-      cvSetData( matrix, data, step ); }\r
-\r
-    CvMatrix( CvMat* m )\r
-    { matrix = m; }\r
-\r
-    CvMatrix( const CvMatrix& m )\r
-    {\r
-        matrix = m.matrix;\r
-        addref();\r
-    }\r
-\r
-    CvMatrix( const char* filename, const char* matname=0, int color=-1 ) : matrix(0)\r
-    {  load( filename, matname, color ); }\r
-\r
-    CvMatrix( CvFileStorage* fs, const char* mapname, const char* matname ) : matrix(0)\r
-    {  read( fs, mapname, matname ); }\r
-\r
-    CvMatrix( CvFileStorage* fs, const char* seqname, int idx ) : matrix(0)\r
-    {  read( fs, seqname, idx ); }\r
-\r
-    ~CvMatrix()\r
-    {\r
-        release();\r
-    }\r
-\r
-    CvMatrix clone() { return CvMatrix(matrix ? cvCloneMat(matrix) : 0); }\r
-\r
-    void set( CvMat* m, bool add_ref )\r
-    {\r
-        release();\r
-        matrix = m;\r
-        if( add_ref )\r
-            addref();\r
-    }\r
-\r
-    void create( int rows, int cols, int type )\r
-    {\r
-        if( !matrix || !matrix->refcount ||\r
-            matrix->rows != rows || matrix->cols != cols ||\r
-            CV_MAT_TYPE(matrix->type) != type )\r
-            set( cvCreateMat( rows, cols, type ), false );\r
-    }\r
-\r
-    void addref() const\r
-    {\r
-        if( matrix )\r
-        {\r
-            if( matrix->hdr_refcount )\r
-                ++matrix->hdr_refcount;\r
-            else if( matrix->refcount )\r
-                ++*matrix->refcount;\r
-        }\r
-    }\r
-\r
-    void release()\r
-    {\r
-        if( matrix )\r
-        {\r
-            if( matrix->hdr_refcount )\r
-            {\r
-                if( --matrix->hdr_refcount == 0 )\r
-                    cvReleaseMat( &matrix );\r
-            }\r
-            else if( matrix->refcount )\r
-            {\r
-                if( --*matrix->refcount == 0 )\r
-                    cvFree( &matrix->refcount );\r
-            }\r
-            matrix = 0;\r
-        }\r
-    }\r
-\r
-    void clear()\r
-    {\r
-        release();\r
-    }\r
-\r
-    bool load( const char* filename, const char* matname=0, int color=-1 );\r
-    bool read( CvFileStorage* fs, const char* mapname, const char* matname );\r
-    bool read( CvFileStorage* fs, const char* seqname, int idx );\r
-    void save( const char* filename, const char* matname, const int* params=0 );\r
-    void write( CvFileStorage* fs, const char* matname );\r
-\r
-    void show( const char* window_name );\r
-\r
-    bool is_valid() { return matrix != 0; }\r
-\r
-    int rows() const { return matrix ? matrix->rows : 0; }\r
-    int cols() const { return matrix ? matrix->cols : 0; }\r
-\r
-    CvSize size() const\r
-    {\r
-        return !matrix ? cvSize(0,0) : cvSize(matrix->rows,matrix->cols);\r
-    }\r
-\r
-    int type() const { return matrix ? CV_MAT_TYPE(matrix->type) : 0; }\r
-    int depth() const { return matrix ? CV_MAT_DEPTH(matrix->type) : 0; }\r
-    int channels() const { return matrix ? CV_MAT_CN(matrix->type) : 0; }\r
-    int pix_size() const { return matrix ? CV_ELEM_SIZE(matrix->type) : 0; }\r
-\r
-    uchar* data() { return matrix ? matrix->data.ptr : 0; }\r
-    const uchar* data() const { return matrix ? matrix->data.ptr : 0; }\r
-    int step() const { return matrix ? matrix->step : 0; }\r
-\r
-    void set_data( void* data, int step=CV_AUTOSTEP )\r
-    { cvSetData( matrix, data, step ); }\r
-\r
-    uchar* row(int i) { return !matrix ? 0 : matrix->data.ptr + i*matrix->step; }\r
-    const uchar* row(int i) const\r
-    { return !matrix ? 0 : matrix->data.ptr + i*matrix->step; }\r
-\r
-    operator const CvMat* () const { return matrix; }\r
-    operator CvMat* () { return matrix; }\r
-\r
-    CvMatrix& operator = (const CvMatrix& _m)\r
-    {\r
-        _m.addref();\r
-        release();\r
-        matrix = _m.matrix;\r
-        return *this;\r
-    }\r
-\r
-protected:\r
-    CvMat* matrix;\r
-};\r
-\r
-\r
 // classes for automatic module/RTTI data registration/unregistration\r
 struct CV_EXPORTS CvModule\r
 {\r
@@ -2116,4 +1826,4 @@ struct CV_EXPORTS CvType
 #include "cxcore.hpp"\r
 #endif // SKIP_INCLUDES\r
 \r
-#endif /*_CXCORE_H_*/\r
+#endif\r