您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ CV_FUNCNAME函数代码示例

51自学网 2021-06-01 20:07:51
  C++
这篇教程C++ CV_FUNCNAME函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中CV_FUNCNAME函数的典型用法代码示例。如果您正苦于以下问题:C++ CV_FUNCNAME函数的具体用法?C++ CV_FUNCNAME怎么用?C++ CV_FUNCNAME使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了CV_FUNCNAME函数的28个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: cvDecomposeProjectionMatrix

CV_IMPL voidcvDecomposeProjectionMatrix( const CvMat *projMatr, CvMat *calibMatr,                             CvMat *rotMatr, CvMat *posVect,                             CvMat *rotMatrX, CvMat *rotMatrY,                             CvMat *rotMatrZ, CvPoint3D64f *eulerAngles){    CvMat *tmpProjMatr = 0;    CvMat *tmpMatrixD = 0;    CvMat *tmpMatrixV = 0;    CvMat *tmpMatrixM = 0;    CV_FUNCNAME("cvDecomposeProjectionMatrix");    __BEGIN__;    /* Validate parameters. */    if(projMatr == 0 || calibMatr == 0 || rotMatr == 0 || posVect == 0)        CV_ERROR(CV_StsNullPtr, "Some of parameters is a NULL pointer!");    if(!CV_IS_MAT(projMatr) || !CV_IS_MAT(calibMatr) || !CV_IS_MAT(rotMatr) || !CV_IS_MAT(posVect))        CV_ERROR(CV_StsUnsupportedFormat, "Input parameters must be a matrices!");    if(projMatr->cols != 4 || projMatr->rows != 3)        CV_ERROR(CV_StsUnmatchedSizes, "Size of projection matrix must be 3x4!");    if(calibMatr->cols != 3 || calibMatr->rows != 3 || rotMatr->cols != 3 || rotMatr->rows != 3)        CV_ERROR(CV_StsUnmatchedSizes, "Size of calibration and rotation matrices must be 3x3!");    if(posVect->cols != 1 || posVect->rows != 4)        CV_ERROR(CV_StsUnmatchedSizes, "Size of position vector must be 4x1!");    CV_CALL(tmpProjMatr = cvCreateMat(4, 4, CV_64F));    CV_CALL(tmpMatrixD = cvCreateMat(4, 4, CV_64F));    CV_CALL(tmpMatrixV = cvCreateMat(4, 4, CV_64F));    CV_CALL(tmpMatrixM = cvCreateMat(3, 3, CV_64F));    /* Compute position vector. */    cvSetZero(tmpProjMatr); // Add zero row to make matrix square.    int i, k;    for(i = 0; i < 3; i++)        for(k = 0; k < 4; k++)            cvmSet(tmpProjMatr, i, k, cvmGet(projMatr, i, k));    CV_CALL(cvSVD(tmpProjMatr, tmpMatrixD, NULL, tmpMatrixV, CV_SVD_MODIFY_A + CV_SVD_V_T));    /* Save position vector. */    for(i = 0; i < 4; i++)        cvmSet(posVect, i, 0, cvmGet(tmpMatrixV, 3, i)); // Solution is last row of V.    /* Compute calibration and rotation matrices via RQ decomposition. */    cvGetCols(projMatr, tmpMatrixM, 0, 3); // M is first square matrix of P.    assert(cvDet(tmpMatrixM) != 0.0); // So far only finite cameras could be decomposed, so M has to be nonsingular [det(M) != 0].    CV_CALL(cvRQDecomp3x3(tmpMatrixM, calibMatr, rotMatr, rotMatrX, rotMatrY, rotMatrZ, eulerAngles));    __END__;    cvReleaseMat(&tmpProjMatr);    cvReleaseMat(&tmpMatrixD);    cvReleaseMat(&tmpMatrixV);    cvReleaseMat(&tmpMatrixM);}
开发者ID:allanca,项目名称:otterdive,代码行数:65,


示例2: cvEigenVV

CV_IMPL voidcvEigenVV( CvArr* srcarr, CvArr* evectsarr, CvArr* evalsarr, double eps ){    CV_FUNCNAME( "cvEigenVV" );    __BEGIN__;    CvMat sstub, *src = (CvMat*)srcarr;    CvMat estub1, *evects = (CvMat*)evectsarr;    CvMat estub2, *evals = (CvMat*)evalsarr;    if( !CV_IS_MAT( src ))        CV_CALL( src = cvGetMat( src, &sstub ));    if( !CV_IS_MAT( evects ))        CV_CALL( evects = cvGetMat( evects, &estub1 ));    if( !CV_IS_MAT( evals ))        CV_CALL( evals = cvGetMat( evals, &estub2 ));    if( src->cols != src->rows )        CV_ERROR( CV_StsUnmatchedSizes, "source is not quadratic matrix" );    if( !CV_ARE_SIZES_EQ( src, evects) )        CV_ERROR( CV_StsUnmatchedSizes, "eigenvectors matrix has inappropriate size" );    if( (evals->rows != src->rows || evals->cols != 1) &&        (evals->cols != src->rows || evals->rows != 1))        CV_ERROR( CV_StsBadSize, "eigenvalues vector has inappropriate size" );    if( !CV_ARE_TYPES_EQ( src, evects ) || !CV_ARE_TYPES_EQ( src, evals ))        CV_ERROR( CV_StsUnmatchedFormats,        "input matrix, eigenvalues and eigenvectors must have the same type" );    if( !CV_IS_MAT_CONT( src->type & evals->type & evects->type ))        CV_ERROR( CV_BadStep, "all the matrices must be continuous" );    if( CV_MAT_TYPE(src->type) == CV_32FC1 )    {        IPPI_CALL( icvJacobiEigens_32f( src->data.fl,                                        evects->data.fl,                                        evals->data.fl, src->cols, (float)eps ));    }    else if( CV_MAT_TYPE(src->type) == CV_64FC1 )    {        IPPI_CALL( icvJacobiEigens_64d( src->data.db,                                        evects->data.db,                                        evals->data.db, src->cols, eps ));    }    else    {        CV_ERROR( CV_StsUnsupportedFormat, "Only 32fC1 and 64fC1 types are supported" );    }    CV_CHECK_NANS( evects );    CV_CHECK_NANS( evals );    __END__;}
开发者ID:273k,项目名称:OpenCV-Android,代码行数:61,


示例3: cvMeanShift

/*F/////////////////////////////////////////////////////////////////////////////////////////    Name:    cvMeanShift//    Purpose: MeanShift algorithm//    Context://    Parameters://      imgProb     - 2D object probability distribution//      windowIn    - CvRect of CAMSHIFT Window intial size//      numIters    - If CAMSHIFT iterates this many times, stop//      windowOut   - Location, height and width of converged CAMSHIFT window//      len         - If != NULL, return equivalent len//      width       - If != NULL, return equivalent width//      itersUsed   - Returns number of iterations CAMSHIFT took to converge//    Returns://      The function itself returns the area found//    Notes://F*/CV_IMPL intcvMeanShift( const void* imgProb, CvRect windowIn,             CvTermCriteria criteria, CvConnectedComp* comp ){    CvMoments moments;    int    i = 0, eps;    CvMat  stub, *mat = (CvMat*)imgProb;    CvMat  cur_win;    CvRect cur_rect = windowIn;    CV_FUNCNAME( "cvMeanShift" );    if( comp )        comp->rect = windowIn;    moments.m00 = moments.m10 = moments.m01 = 0;    __BEGIN__;    CV_CALL( mat = cvGetMat( mat, &stub ));    if( CV_MAT_CN( mat->type ) > 1 )        CV_ERROR( CV_BadNumChannels, cvUnsupportedFormat );    if( windowIn.height <= 0 || windowIn.width <= 0 )        CV_ERROR( CV_StsBadArg, "Input window has non-positive sizes" );    if( windowIn.x < 0 || windowIn.x + windowIn.width > mat->cols ||        windowIn.y < 0 || windowIn.y + windowIn.height > mat->rows )        CV_ERROR( CV_StsBadArg, "Initial window is not inside the image ROI" );    CV_CALL( criteria = cvCheckTermCriteria( criteria, 1., 100 ));    eps = cvRound( criteria.epsilon * criteria.epsilon );    for( i = 0; i < criteria.max_iter; i++ )    {        int dx, dy, nx, ny;        double inv_m00;        CV_CALL( cvGetSubRect( mat, &cur_win, cur_rect ));         CV_CALL( cvMoments( &cur_win, &moments ));        /* Calculating center of mass */        if( fabs(moments.m00) < DBL_EPSILON )            break;        inv_m00 = moments.inv_sqrt_m00*moments.inv_sqrt_m00;        dx = cvRound( moments.m10 * inv_m00 - windowIn.width*0.5 );        dy = cvRound( moments.m01 * inv_m00 - windowIn.height*0.5 );        nx = cur_rect.x + dx;        ny = cur_rect.y + dy;        if( nx < 0 )            nx = 0;        else if( nx + cur_rect.width > mat->cols )            nx = mat->cols - cur_rect.width;        if( ny < 0 )            ny = 0;        else if( ny + cur_rect.height > mat->rows )            ny = mat->rows - cur_rect.height;        dx = nx - cur_rect.x;        dy = ny - cur_rect.y;        cur_rect.x = nx;        cur_rect.y = ny;        /* Check for coverage centers mass & window */        if( dx*dx + dy*dy < eps )            break;    }    __END__;    if( comp )    {        comp->rect = cur_rect;        comp->area = (float)moments.m00;    }    return i;}
开发者ID:273k,项目名称:OpenCV-Android,代码行数:100,


示例4: cvKMeans2

CV_IMPL voidcvKMeans2( const CvArr* samples_arr, int cluster_count,           CvArr* labels_arr, CvTermCriteria termcrit ){    CvMat* centers = 0;    CvMat* old_centers = 0;    CvMat* counters = 0;    CV_FUNCNAME( "cvKMeans2" );    __BEGIN__;    CvMat samples_stub, labels_stub;    CvMat* samples = (CvMat*)samples_arr;    CvMat* labels = (CvMat*)labels_arr;    CvMat* temp = 0;    CvRNG rng = CvRNG(-1);    int i, j, k, sample_count, dims;    int ids_delta, iter;    double max_dist;    if( !CV_IS_MAT( samples ))        CV_CALL( samples = cvGetMat( samples, &samples_stub ));    if( !CV_IS_MAT( labels ))        CV_CALL( labels = cvGetMat( labels, &labels_stub ));    if( cluster_count < 1 )        CV_ERROR( CV_StsOutOfRange, "Number of clusters should be positive" );    if( CV_MAT_DEPTH(samples->type) != CV_32F || CV_MAT_TYPE(labels->type) != CV_32SC1 )        CV_ERROR( CV_StsUnsupportedFormat,        "samples should be floating-point matrix, cluster_idx - integer vector" );    if( labels->rows != 1 && (labels->cols != 1 || !CV_IS_MAT_CONT(labels->type)) ||        labels->rows + labels->cols - 1 != samples->rows )        CV_ERROR( CV_StsUnmatchedSizes,        "cluster_idx should be 1D vector of the same number of elements as samples' number of rows" );    CV_CALL( termcrit = cvCheckTermCriteria( termcrit, 1e-6, 100 ));    termcrit.epsilon *= termcrit.epsilon;    sample_count = samples->rows;    if( cluster_count > sample_count )        cluster_count = sample_count;    dims = samples->cols*CV_MAT_CN(samples->type);    ids_delta = labels->step ? labels->step/(int)sizeof(int) : 1;    CV_CALL( centers = cvCreateMat( cluster_count, dims, CV_64FC1 ));    CV_CALL( old_centers = cvCreateMat( cluster_count, dims, CV_64FC1 ));    CV_CALL( counters = cvCreateMat( 1, cluster_count, CV_32SC1 ));    // init centers    for( i = 0; i < sample_count; i++ )        labels->data.i[i] = cvRandInt(&rng) % cluster_count;    counters->cols = cluster_count; // cut down counters    max_dist = termcrit.epsilon*2;    for( iter = 0; iter < termcrit.max_iter; iter++ )    {        // computer centers        cvZero( centers );        cvZero( counters );        for( i = 0; i < sample_count; i++ )        {            float* s = (float*)(samples->data.ptr + i*samples->step);            k = labels->data.i[i*ids_delta];            double* c = (double*)(centers->data.ptr + k*centers->step);            for( j = 0; j <= dims - 4; j += 4 )            {                double t0 = c[j] + s[j];                double t1 = c[j+1] + s[j+1];                c[j] = t0;                c[j+1] = t1;                t0 = c[j+2] + s[j+2];                t1 = c[j+3] + s[j+3];                c[j+2] = t0;                c[j+3] = t1;            }            for( ; j < dims; j++ )                c[j] += s[j];            counters->data.i[k]++;        }        if( iter > 0 )            max_dist = 0;        for( k = 0; k < cluster_count; k++ )        {            double* c = (double*)(centers->data.ptr + k*centers->step);            if( counters->data.i[k] != 0 )            {                double scale = 1./counters->data.i[k];//.........这里部分代码省略.........
开发者ID:cybertk,项目名称:opencv,代码行数:101,


示例5: cvRange

CV_IMPL CvArr*cvRange( CvArr* arr, double start, double end ){    int ok = 0;        CV_FUNCNAME( "cvRange" );    __BEGIN__;        CvMat stub, *mat = (CvMat*)arr;    double delta;    int type, step;    double val = start;    int i, j;    int rows, cols;        if( !CV_IS_MAT(mat) )        CV_CALL( mat = cvGetMat( mat, &stub) );    rows = mat->rows;    cols = mat->cols;    type = CV_MAT_TYPE(mat->type);    delta = (end-start)/(rows*cols);    if( CV_IS_MAT_CONT(mat->type) )    {        cols *= rows;        rows = 1;        step = 1;    }    else        step = mat->step / CV_ELEM_SIZE(type);    if( type == CV_32SC1 )    {        int* idata = mat->data.i;        int ival = cvRound(val), idelta = cvRound(delta);        if( fabs(val - ival) < DBL_EPSILON &&            fabs(delta - idelta) < DBL_EPSILON )        {            for( i = 0; i < rows; i++, idata += step )                for( j = 0; j < cols; j++, ival += idelta )                    idata[j] = ival;        }        else        {            for( i = 0; i < rows; i++, idata += step )                for( j = 0; j < cols; j++, val += delta )                    idata[j] = cvRound(val);        }    }    else if( type == CV_32FC1 )    {        float* fdata = mat->data.fl;        for( i = 0; i < rows; i++, fdata += step )            for( j = 0; j < cols; j++, val += delta )                fdata[j] = (float)val;    }    else        CV_ERROR( CV_StsUnsupportedFormat, "The function only supports 32sC1 and 32fC1 datatypes" );    ok = 1;    __END__;    return ok ? arr : 0;}
开发者ID:cybertk,项目名称:opencv,代码行数:68,


示例6: cvScalarToRawData

// convert CvScalar to specified typevoidcvScalarToRawData( CvScalar* scalar, int flags, void* data, int extend_to_12 ){    CV_FUNCNAME( "cvScalarToRawData" );        __BEGIN__;    int type = CV_ARR_TYPE( flags );    int cn = CV_ARR_CN( type );    int depth = type & CV_ARR_DEPTH_MASK;    assert( scalar && data );    assert( (unsigned)(cn - 1) < 4 );    switch( depth )    {    case CV_8UC1:        while( cn-- )        {            int t = cvRound( scalar->val[cn] );            ((uchar*)data)[cn] = CV_CAST_8U(t);        }        break;    case CV_8SC1:        while( cn-- )        {            int t = cvRound( scalar->val[cn] );            ((char*)data)[cn] = CV_CAST_8S(t);        }        break;    case CV_16SC1:        while( cn-- )        {            int t = cvRound( scalar->val[cn] );            ((short*)data)[cn] = CV_CAST_16S(t);        }        break;    case CV_32SC1:        while( cn-- )            ((int*)data)[cn] = cvRound( scalar->val[cn] );        break;    case CV_32FC1:        while( cn-- )            ((float*)data)[cn] = (float)(scalar->val[cn]);        break;    case CV_64FC1:        while( cn-- )            ((double*)data)[cn] = (double)(scalar->val[cn]);        break;    default:        assert(0);        CV_ERROR_FROM_CODE( CV_BadDepth );    }    if( extend_to_12 )    {        int pix_size = icvPixSize[type];        int offset = icvPixSize[depth]*12;        do        {            offset -= pix_size;            memcpy( (char*)data + offset, data, pix_size );        }        while( offset > pix_size );    }    __END__;}
开发者ID:mikanradojevic,项目名称:sdkpub,代码行数:70,


示例7: Copyright

/*  Finds real roots of cubic, quadratic or linear equation.  The original code has been taken from Ken Turkowski web page  (http://www.worldserver.com/turk/opensource/) and adopted for OpenCV.  Here is the copyright notice.  -----------------------------------------------------------------------  Copyright (C) 1978-1999 Ken Turkowski. <[email
C++ CV_INSTRUMENT_REGION函数代码示例
C++ CV_ERROR函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。