icvDefaultSplitIdx_R和icvDefaultSplitIdx_C

原创 2015年07月10日 10:33:17



static void CV_CDECL icvDefaultSplitIdx_R( int compidx, float threshold,
                                    CvMat* idx, CvMat** left, CvMat** right,
                                    void* userdata )
{
    CvMat* trainData = (CvMat*) userdata;
    int i = 0;

    *left = cvCreateMat( 1, trainData->rows, CV_32FC1 );
    *right = cvCreateMat( 1, trainData->rows, CV_32FC1 );
    (*left)->cols = (*right)->cols = 0;
    if( idx == NULL )
    {
        for( i = 0; i < trainData->rows; i++ )
        {
            if( CV_MAT_ELEM( *trainData, float, i, compidx ) < threshold )
            {
                (*left)->data.fl[(*left)->cols++] = (float) i;
            }
            else
            {
                (*right)->data.fl[(*right)->cols++] = (float) i;
            }
        }
    }
    else
    {
        uchar* idxdata;
        int idxnum;
        int idxstep;
        int index;

        idxdata = idx->data.ptr;
        idxnum = (idx->rows == 1) ? idx->cols : idx->rows;
        idxstep = (idx->rows == 1) ? CV_ELEM_SIZE( idx->type ) : idx->step;
        for( i = 0; i < idxnum; i++ )
        {
            index = (int) *((float*) (idxdata + i * idxstep));
            if( CV_MAT_ELEM( *trainData, float, index, compidx ) < threshold )
            {
                (*left)->data.fl[(*left)->cols++] = (float) index;
            }
            else
            {
                (*right)->data.fl[(*right)->cols++] = (float) index;
            }
        }
    }
}

static void CV_CDECL icvDefaultSplitIdx_C( int compidx, float threshold,
                                    CvMat* idx, CvMat** left, CvMat** right,
                                    void* userdata )
{
    CvMat* trainData = (CvMat*) userdata;
    int i = 0;

    *left = cvCreateMat( 1, trainData->cols, CV_32FC1 );
    *right = cvCreateMat( 1, trainData->cols, CV_32FC1 );
    (*left)->cols = (*right)->cols = 0;
    if( idx == NULL )
    {
        for( i = 0; i < trainData->cols; i++ )
        {
            if( CV_MAT_ELEM( *trainData, float, compidx, i ) < threshold )
            {
                (*left)->data.fl[(*left)->cols++] = (float) i;
            }
            else
            {
                (*right)->data.fl[(*right)->cols++] = (float) i;
            }
        }
    }
    else
    {
        uchar* idxdata;
        int idxnum;
        int idxstep;
        int index;

        idxdata = idx->data.ptr;
        idxnum = (idx->rows == 1) ? idx->cols : idx->rows;
        idxstep = (idx->rows == 1) ? CV_ELEM_SIZE( idx->type ) : idx->step;
        for( i = 0; i < idxnum; i++ )
        {
            index = (int) *((float*) (idxdata + i * idxstep));
            if( CV_MAT_ELEM( *trainData, float, compidx, index ) < threshold )
            {
                (*left)->data.fl[(*left)->cols++] = (float) index;
            }
            else
            {
                (*right)->data.fl[(*right)->cols++] = (float) index;
            }
        }
    }
}


$()和${}和$(())和(())

Shell学习笔记 - $()和${}和$(())和(()) $()和${}的用法: 在 bash shell 中,$( ) 与 ` ` (反引号) 都是用来做命令替换用(command su...
  • chenyiming_1990
  • chenyiming_1990
  • 2013年08月26日 11:53
  • 832

linux $()和${}和$(())和(())

$()和${}的用法: 在 bash shell 中,$( ) 与 ` ` (反引号) 都是用来做命令替换用(commandsubstitution)的。而 $( ) 并不见的每一种 shell 都...
  • leehbing
  • leehbing
  • 2017年03月12日 21:03
  • 104

&&和& ;||和|

&&短路与 &与(非短路与) ||短路或 |或(非短路或) 关于它们的用法可以百度,这里介绍它们的区别: 就拿“与”来说,要求所有的条件都判断;而如果使用短路与,第一个条件为...
  • SAYA_
  • SAYA_
  • 2015年10月25日 16:33
  • 224

|和|| &和&&

|和|| &和&&的区别
  • Mr_zhuo_
  • Mr_zhuo_
  • 2017年03月30日 17:37
  • 181

|和||、&&和&

| : 会检查每一个 条件的真伪,再做“或”运算 ||: 按照条件写的顺序,直到一个为true时,后面的条件则不再检查,直接进入条件  & : 会检查每一个 条件的真伪,再做“与”运算   &&...
  • zhn2200zhn
  • zhn2200zhn
  • 2014年04月22日 19:55
  • 218

&和&& |和||

按位与:a&b是把a和b都转换成二进制数然后再进行与的运算;(都会运行) 逻辑与:a&&b就是当且仅当两个操作数均为 true时,其结果才为 true;只要有一个为false后面就不执行了 例...
  • cheidou123
  • cheidou123
  • 2017年04月04日 13:35
  • 57

\'和' "和\"

#include #include int main() { if('\"'=='"') printf("%d\n",1); return 0; }
  • yuweilong000
  • yuweilong000
  • 2013年10月21日 20:56
  • 207

&和&&,|和||

非短路与:& 短路与:&& 非短路或:| 短路或:|| 短路与非短路的区别在于:是否判断到符合条件了继续判断。 短路的判断到符合条件了就不往判断了; 非短路的需要将所有的条...
  • wangyj1992
  • wangyj1992
  • 2017年01月24日 14:22
  • 73

${}和#{}的区别

mybatis中${}和#{}区别
  • zouxucong
  • zouxucong
  • 2016年10月17日 11:53
  • 13381

$( )和` `(反引号)和${}和$(())用法

一、基本概念 在 bash shell 中,$( ) 与 ` ` (反引号) 都是用来做命令替换用(command substitution)的。 所谓的命令替换与我们第五章学过的变量替换...
  • panpan639944806
  • panpan639944806
  • 2014年03月06日 15:10
  • 447
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:icvDefaultSplitIdx_R和icvDefaultSplitIdx_C
举报原因:
原因补充:

(最多只允许输入30个字)