icvDefaultSplitIdx_R和icvDefaultSplitIdx_C
2015-07-10 10:33
423 查看
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; } } } }
相关文章推荐
- swift 创建tableView 并实现协议
- leetcode 54 : Spiral Matrix
- C# 目录(文件夹)复制实现
- for test test test
- iOS 7原生二维码扫描中文gbk编码乱码的解决
- SAPUI5-HTML
- oracle中的exists和not exists和in用法详解
- iOS编程 界面布局 纯代码 VFL编写和添加 左右两个view,按比例设置大小
- math.h中一些常用函数
- 学习Java Web开发[1]可上传图片的客户端开发
- VOJ 1067 Warcraft III 守望者的烦恼 (矩阵高速功率+dp)
- 转载:Android 如何解决dialog弹出时无法捕捉Activity的back事件
- C#数据库的三种连接方式
- Builder模式——设计模式学习
- 生产订单的 lock 与 unlock
- Python使用时间戳
- Android Robtium ActivityUtils
- Windows使用bat批处理实现守护进程脚本分享
- 政企云计算信息化发展转变
- Linux下内存统计和内存泄露类问题的定位方法