本文整理汇总了C++中cvGetRow函数的典型用法代码示例。如果您正苦于以下问题:C++ cvGetRow函数的具体用法?C++ cvGetRow怎么用?C++ cvGetRow使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cvGetRow函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: cvMatMul
/*! Transform the grid with given homograhy and average colors over
* triangles.
*/
void LightCollector::averageImage(IplImage *im, CvMat *_homography)
{
if (avgChannels != im->nChannels) {
if (avgChannels < im->nChannels) {
delete[] avg;
avg = 0;
}
avgChannels = im->nChannels;
}
if (!avg) avg = new float[avgChannels*nbTri];
// apply the homography to every mesh vertex
if (_homography)
cvMatMul(_homography, vertices, transformed);
else
cvCopy(vertices, transformed);
CvMat r1,r2,r3;
cvGetRow(transformed, &r1, 0);
cvGetRow(transformed, &r2, 1);
cvGetRow(transformed, &r3, 2);
cvDiv(&r1,&r3,&r1);
cvDiv(&r2,&r3,&r2);
nbPix=0;
for (int t=0; t<nbTri;t++) {
int pts[3][2];
for (int i=0; i<3; i++) {
assert(triangles[t*3+i] < transformed->cols);
pts[i][0] = cvRound(CV_MAT_ELEM(*transformed, float, 0, triangles[t*3+i]));
pts[i][1] = cvRound(CV_MAT_ELEM(*transformed, float, 1, triangles[t*3+i]));
}
nbPix+=stat_triangle(im, pts, avg+t*avgChannels);
}
}
开发者ID:6301158,项目名称:ofx-dev,代码行数:37,代码来源:lightcollector.cpp
示例2: mushroom_read_dtree
CvDTree* mushroom_read_dtree(CvDTree* dtree, const CvMat* data, const CvMat* missing,
const CvMat* responses, float p_weight )
{
int i, hr1 = 0, hr2 = 0, p_total = 0;
float priors[] = { 1, p_weight };
dtree->clear();
dtree->load("tree1.xml");
// compute hit-rate on the training database, demonstrates predict usage.
for( i = 0; i < data->rows; i++ )
{
CvMat sample, mask;
cvGetRow( data, &sample, i );
cvGetRow( missing, &mask, i );
double r = dtree->predict( &sample, &mask )->value;
int d = fabs(r - responses->data.fl[i]) >= FLT_EPSILON;
if( d )
{
if( r != 'p' )
hr1++;
else
hr2++;
}
p_total += responses->data.fl[i] == 'p';
}
printf( "Results on the training database:\n"
"\tPoisonous mushrooms mis-predicted: %d (%g%%)\n"
"\tFalse-alarms: %d (%g%%)\n", hr1, (double)hr1*100/p_total,
hr2, (double)hr2*100/(data->rows - p_total) );
// cvReleaseMat( &var_type );
return dtree;
}
开发者ID:janfrs,项目名称:kwc-ros-pkg,代码行数:35,代码来源:Tree.cpp
示例3: sprintf
/// <summary>
/// Reads the sample images and associated charaters into trainClasses and trainData respectively.
/// </summary>
/// <returns> Nothing. </returns>
void OCR::getData()
{
IplImage* src_image;
IplImage prs_image;
CvMat row,data;
char file[255];
char dataFile[255];
std::ifstream labelStream;
std::ostringstream outStringStream;
char ch;
int i,j;
for(i = 0; i < classes; i++)
{ //26
//Read the corresponding character for current sample being processed into ch.
sprintf(dataFile,"%s%d/data.txt",file_path, i);
labelStream.open(dataFile);
labelStream >> ch;
labelStream.close();
for( j = 0; j< train_samples; j++)
{ //3
//Load file
//get the path of image for training into file.
if(j<10)
sprintf(file,"%s%d/%d0%d.pbm",file_path, i, i, j);
else
sprintf(file,"%s%d/%d%d.pbm",file_path, i, i, j);
src_image = cvLoadImage(file,0);
if(!src_image)
{
printf("Error: Cant load image %s\n", file);
//exit(-1);
}
//process file
prs_image = preprocessing(src_image, size, size);
//Set class label
cvGetRow(trainClasses, &row, i*train_samples + j);
cvSet(&row, cvRealScalar(ch));
//Set data
cvGetRow(trainData, &row, i*train_samples + j);
IplImage* img = cvCreateImage( cvSize( size, size ), IPL_DEPTH_32F, 1 );
//convert 8 bits image to 32 float image
cvConvertScale(&prs_image, img, 0.0039215, 0);
cvGetSubRect(img, &data, cvRect(0,0, size,size));
CvMat row_header, *row1;
//convert data matrix sizexsize to vecor
row1 = cvReshape( &data, &row_header, 0, 1 );
cvCopy(row1, &row, NULL);
}
}
}
开发者ID:AAAyag,项目名称:OCR-1,代码行数:58,代码来源:OCR.cpp
示例4: mushroom_create_dtree
CvDTree* mushroom_create_dtree( const CvMat* data, const CvMat* missing,
const CvMat* responses, float p_weight )
{
CvDTree* dtree;
CvMat* var_type;
int i, hr1 = 0, hr2 = 0, p_total = 0;
float priors[] = { 1, p_weight };
var_type = cvCreateMat( data->cols + 1, 1, CV_8U );
cvSet( var_type, cvScalarAll(CV_VAR_CATEGORICAL) ); // all the variables are categorical
dtree = new CvDTree;
dtree->train( data, CV_ROW_SAMPLE, responses, 0, 0, var_type, missing,
CvDTreeParams( 8, // max depth
10, // min sample count
0, // regression accuracy: N/A here
true, // compute surrogate split, as we have missing data
15, // max number of categories (use sub-optimal algorithm for larger numbers)
10, // the number of cross-validation folds
true, // use 1SE rule => smaller tree
true, // throw away the pruned tree branches
priors // the array of priors, the bigger p_weight, the more attention
// to the poisonous mushrooms
// (a mushroom will be judjed to be poisonous with bigger chance)
));
// compute hit-rate on the training database, demonstrates predict usage.
for( i = 0; i < data->rows; i++ )
{
CvMat sample, mask;
cvGetRow( data, &sample, i );
cvGetRow( missing, &mask, i );
double r = dtree->predict( &sample, &mask )->value;
int d = fabs(r - responses->data.fl[i]) >= FLT_EPSILON;
if( d )
{
if( r != 'p' )
hr1++;
else
hr2++;
}
p_total += responses->data.fl[i] == 'p';
}
printf( "Results on the training database:\n"
"\tPoisonous mushrooms mis-predicted: %d (%g%%)\n"
"\tFalse-alarms: %d (%g%%)\n", hr1, (double)hr1*100/p_total,
hr2, (double)hr2*100/(data->rows - p_total) );
cvReleaseMat( &var_type );
return dtree;
}
开发者ID:AndrewShmig,项目名称:FaceDetect,代码行数:54,代码来源:mushroom.cpp
示例5: svm_calc_error
float svm_calc_error( CvSVM* svm, CvMLData* _data, int type, vector<float> *resp )
{
svm_check_data(_data);
float err = 0;
const CvMat* values = _data->get_values();
const CvMat* response = _data->get_responses();
const CvMat* sample_idx = (type == CV_TEST_ERROR) ? _data->get_test_sample_idx() : _data->get_train_sample_idx();
const CvMat* var_types = _data->get_var_types();
int* sidx = sample_idx ? sample_idx->data.i : 0;
int r_step = CV_IS_MAT_CONT(response->type) ?
1 : response->step / CV_ELEM_SIZE(response->type);
bool is_classifier = var_types->data.ptr[var_types->cols-1] == CV_VAR_CATEGORICAL;
int sample_count = sample_idx ? sample_idx->cols : 0;
sample_count = (type == CV_TRAIN_ERROR && sample_count == 0) ? values->rows : sample_count;
float* pred_resp = 0;
if( resp && (sample_count > 0) )
{
resp->resize( sample_count );
pred_resp = &((*resp)[0]);
}
if ( is_classifier )
{
for( int i = 0; i < sample_count; i++ )
{
CvMat sample;
int si = sidx ? sidx[i] : i;
cvGetRow( values, &sample, si );
float r = svm->predict( &sample );
if( pred_resp )
pred_resp[i] = r;
int d = fabs((double)r - response->data.fl[si*r_step]) <= FLT_EPSILON ? 0 : 1;
err += d;
}
err = sample_count ? err / (float)sample_count * 100 : -FLT_MAX;
}
else
{
for( int i = 0; i < sample_count; i++ )
{
CvMat sample;
int si = sidx ? sidx[i] : i;
cvGetRow( values, &sample, si );
float r = svm->predict( &sample );
if( pred_resp )
pred_resp[i] = r;
float d = r - response->data.fl[si*r_step];
err += d*d;
}
err = sample_count ? err / (float)sample_count : -FLT_MAX;
}
return err;
}
开发者ID:Avatarchik,项目名称:EmguCV-Unity,代码行数:52,代码来源:mltests.cpp
示例6: knearest_calc_error
float knearest_calc_error( CvKNearest* knearest, CvMLData* _data, int k, int type, vector<float> *resp )
{
float err = 0;
const CvMat* response = _data->get_responses();
const CvMat* sample_idx = (type == CV_TEST_ERROR) ? _data->get_test_sample_idx() : _data->get_train_sample_idx();
int* sidx = sample_idx ? sample_idx->data.i : 0;
int r_step = CV_IS_MAT_CONT(response->type) ?
1 : response->step / CV_ELEM_SIZE(response->type);
bool is_regression = _data->get_var_type( _data->get_response_idx() ) == CV_VAR_ORDERED;
CvMat predictors;
knearest_check_data_and_get_predictors( _data, &predictors );
int sample_count = sample_idx ? sample_idx->cols : 0;
sample_count = (type == CV_TRAIN_ERROR && sample_count == 0) ? predictors.rows : sample_count;
float* pred_resp = 0;
if( resp && (sample_count > 0) )
{
resp->resize( sample_count );
pred_resp = &((*resp)[0]);
}
if ( !is_regression )
{
for( int i = 0; i < sample_count; i++ )
{
CvMat sample;
int si = sidx ? sidx[i] : i;
cvGetRow( &predictors, &sample, si );
float r = knearest->find_nearest( &sample, k );
if( pred_resp )
pred_resp[i] = r;
int d = fabs((double)r - response->data.fl[si*r_step]) <= FLT_EPSILON ? 0 : 1;
err += d;
}
err = sample_count ? err / (float)sample_count * 100 : -FLT_MAX;
}
else
{
for( int i = 0; i < sample_count; i++ )
{
CvMat sample;
int si = sidx ? sidx[i] : i;
cvGetRow( &predictors, &sample, si );
float r = knearest->find_nearest( &sample, k );
if( pred_resp )
pred_resp[i] = r;
float d = r - response->data.fl[si*r_step];
err += d*d;
}
err = sample_count ? err / (float)sample_count : -FLT_MAX;
}
return err;
}
开发者ID:Avatarchik,项目名称:EmguCV-Unity,代码行数:51,代码来源:mltests.cpp
示例7: cvCreateMat
bool LightCollector::genGrid(float corners[4][2], int nx, int ny)
{
if (nx<1 || ny<1) return false;
if (avg) delete[] avg; avg=0;
if (vertices) cvReleaseMat(&vertices);
if (transformed) cvReleaseMat(&transformed);
// generate vertices
vertices = cvCreateMat(3, (nx+1)*(ny+1), CV_32FC1);
transformed = cvCreateMat(3, vertices->cols, CV_32FC1);
for (int y=0; y<(ny+1); ++y)
for (int x=0; x<(nx+1); ++x) {
CV_MAT_ELEM(*vertices, float, 0, y*(nx+1)+x) = float(x)/float(nx);
CV_MAT_ELEM(*vertices, float, 1, y*(nx+1)+x) = float(y)/float(ny);
CV_MAT_ELEM(*vertices, float, 2, y*(nx+1)+x) = 1;
}
// generate triangles
nbTri = nx*ny*2;
triangles = new int[nbTri*3];
int *tri = triangles;
for (int y=0; y<ny; ++y)
for (int x=0; x<nx; ++x) {
tri[0] = y*(nx+1)+x;
tri[1] = y*(nx+1)+x+1;
tri[2] = (y+1)*(nx+1)+x;
tri+=3;
tri[0] = y*(nx+1)+x+1;
tri[1] = (y+1)*(nx+1)+x+1;
tri[2] = (y+1)*(nx+1)+x;
tri+=3;
}
homography H;
if (!H.estimate(0, 0, corners[0][0], corners[0][1],
1, 0, corners[1][0], corners[1][1],
1, 1, corners[2][0], corners[2][1],
0, 1, corners[3][0], corners[3][1]))
return false;
cvMatMul(&H, vertices, transformed);
CvMat r1,r2,r3, d1, d2;
cvGetRow(transformed, &r1, 0);
cvGetRow(transformed, &r2, 1);
cvGetRow(transformed, &r3, 2);
cvGetRow(vertices, &d1, 0);
cvGetRow(vertices, &d2, 1);
cvDiv(&r1,&r3,&d1);
cvDiv(&r2,&r3,&d2);
return true;
}
开发者ID:6301158,项目名称:ofx-dev,代码行数:51,代码来源:lightcollector.cpp
示例8: cvCreateMat
void FacePredict::CalcNewTextureParams(CvMat* curParam, CvMat* newParam, int curAgeG, int newAgeG)
{
CvMat* diff = cvCreateMat(1, __nTextureModes, CV_64FC1);
CvMat* curClassicP = cvCreateMat(1, __nTextureModes, CV_64FC1);
CvMat* newClassicP = cvCreateMat(1, __nTextureModes, CV_64FC1);
cvGetRow(__TextureParamGroups, curClassicP, curAgeG);
cvGetRow(__TextureParamGroups, newClassicP, newAgeG);
cvSub(newClassicP, curClassicP, diff);
cvAdd(curParam, diff, newParam);
cvReleaseMat(&diff);
cvReleaseMat(&curClassicP);
cvReleaseMat(&newClassicP);
}
开发者ID:timedcy,项目名称:face,代码行数:14,代码来源:FacePredict.cpp
示例9: sprintf
void basicOCR::getData()
{
IplImage* src_image;
IplImage prs_image;
CvMat row,data;
char file[255];
int i,j;
//for(i =0; i<classes; i++)
for (i = 32; i < 32 + classes; i++)
{
for ( j = 0; j < train_samples; j++)
{
//加载pbm格式图像,作为训练
/*if(j < 10)
sprintf(file,"%s%d/%d0%d.pbm",file_path, i - 48, i - 48 , j);
else
sprintf(file,"%s%d/%d%d.pbm",file_path, i - 48, i - 48 , j);*/
if (i >= 48 && i <= 57)
sprintf(file,"%s%d/%d.pbm",file_path, i, j);
else
sprintf(file,"%s%d/%d.bmp",file_path, i, j);
src_image = cvLoadImage(file,0);
if(!src_image)
{
//printf("Error: Cant load image %s\n", file);
continue;
//exit(-1);
}
//process file
prs_image = preprocessing(src_image, size, size);
//Set class label
cvGetRow(trainClasses, &row, (i - 32)*train_samples + j);
cvSet(&row, cvRealScalar(i));
//Set data
cvGetRow(trainData, &row, (i - 32)*train_samples + j);
IplImage* img = cvCreateImage( cvSize( size, size ), IPL_DEPTH_32F, 1 );
//convert 8 bits image to 32 float image
cvConvertScale(&prs_image, img, 0.0039215, 0);
cvGetSubRect(img, &data, cvRect(0,0, size,size));
CvMat row_header, *row1;
//convert data matrix sizexsize to vecor
row1 = cvReshape( &data, &row_header, 0, 1 );
cvCopy(row1, &row, NULL);
}
}
}
开发者ID:thunder176,项目名称:OCR_ASCII_Machine_Learning,代码行数:50,代码来源:basicOCR.cpp
示例10: cvCreateMat
//============================================================================
void AAM_Basic::CalcCVectors(const std::vector<AAM_Shape>& AllShapes,
const std::vector<IplImage*>& AllImages,
CvMat* CParams)
{
int npixels = __cam.__texture.nPixels();
int npointsby2 = __cam.__shape.nPoints()*2;
int nfeatures = __cam.nParameters();
CvMat* a = cvCreateMat(1, nfeatures, CV_64FC1);//appearance vector
CvMat* s = cvCreateMat(1, npointsby2, CV_64FC1);//shape vector
CvMat* t = cvCreateMat(1, npixels, CV_64FC1);//texture vector
for(int i = 0; i < AllShapes.size(); i++)
{
//calculate current shape and texture vector
AllShapes[i].Point2Mat(s);
__cam.__paw.FasterGetWarpTextureFromMatShape(s, AllImages[i], t, true);
__cam.__texture.AlignTextureToRef(__cam.__MeanG, t);
//convert shape and texture vector to appearance vector
__cam.ShapeTexture2Combined(s, t, a);
//calculate appearance parameters by project to appearance spaces
CvMat c; cvGetRow(CParams, &c, i);
cvProjectPCA(a, __cam.__MeanAppearance, __cam.__AppearanceEigenVectors, &c);
}
cvReleaseMat(&s);
cvReleaseMat(&t);
cvReleaseMat(&a);
}
开发者ID:aodkrisda,项目名称:face-gesture-api,代码行数:31,代码来源:AAM_Basic.cpp
示例11: read_num_class_data
int RandomTrees::test(const char* sample_filename, const char* model_filename, double &test_error)
{
CvMat* data = 0;
CvMat* responses = 0;
int ok = read_num_class_data( sample_filename, this->number_of_features_, &data, &responses );
int nsamples_all = 0;
int i = 0;
if( !ok )
{
printf( "Could not read the sample file %s\n", sample_filename );
return -1;
}
printf( "The sample file %s is loaded.\n", sample_filename );
nsamples_all = data->rows;
// compute prediction error on train and test data
for( i = 0; i < nsamples_all; i++ )
{
CvMat sample;
cvGetRow( data, &sample, i );
this->loadModel(model_filename);
this->classify(&sample);
}
cvReleaseMat( &data );
cvReleaseMat( &responses );
return 0;
}
开发者ID:EduFill,项目名称:hbrs-ros-pkg,代码行数:33,代码来源:random_trees.cpp
示例12: cvRealScalar
/// <summary>
/// Finds min and max Y of the data present in given image.
/// </summary>
/// <params name="imsSrc">
/// Source image for which min and max Y has to be found.
/// </params>
/// <params name="min">
/// Int pointer where the min Y has to saved.
/// </params>
/// <params name="max">
/// Int pointer where the max Y has to saved.
/// </params>
/// <returns> Nothing. </returns>
void OCR::findY(IplImage* imgSrc,int* min, int* max)
{
int i;
int minFound=0;
CvMat data;
CvScalar maxVal=cvRealScalar(imgSrc->width * 255);
CvScalar val=cvRealScalar(0);
//For each col sum, if sum < width*255 then we find the min
//then continue to end to search the max, if sum< width*255 then is new max
for (i=0; i< imgSrc->height; i++)
{
val = cvRealScalar(0);
cvGetRow(imgSrc, &data, i);
val= cvSum(&data);
if(val.val[0] < maxVal.val[0])
{
*max=i;
if(!minFound)
{
*min= i;
minFound= 1;
}
}
}
}
开发者ID:AAAyag,项目名称:OCR-1,代码行数:38,代码来源:OCR.cpp
示例13: nbayes_calc_error
float nbayes_calc_error( CvNormalBayesClassifier* nbayes, CvMLData* _data, int type, vector<float> *resp )
{
float err = 0;
nbayes_check_data( _data );
const CvMat* values = _data->get_values();
const CvMat* response = _data->get_responses();
const CvMat* sample_idx = (type == CV_TEST_ERROR) ? _data->get_test_sample_idx() : _data->get_train_sample_idx();
int* sidx = sample_idx ? sample_idx->data.i : 0;
int r_step = CV_IS_MAT_CONT(response->type) ?
1 : response->step / CV_ELEM_SIZE(response->type);
int sample_count = sample_idx ? sample_idx->cols : 0;
sample_count = (type == CV_TRAIN_ERROR && sample_count == 0) ? values->rows : sample_count;
float* pred_resp = 0;
if( resp && (sample_count > 0) )
{
resp->resize( sample_count );
pred_resp = &((*resp)[0]);
}
for( int i = 0; i < sample_count; i++ )
{
CvMat sample;
int si = sidx ? sidx[i] : i;
cvGetRow( values, &sample, si );
float r = (float)nbayes->predict( &sample, 0 );
if( pred_resp )
pred_resp[i] = r;
int d = fabs((double)r - response->data.fl[si*r_step]) <= FLT_EPSILON ? 0 : 1;
err += d;
}
err = sample_count ? err / (float)sample_count * 100 : -FLT_MAX;
return err;
}
开发者ID:Avatarchik,项目名称:EmguCV-Unity,代码行数:33,代码来源:mltests.cpp
示例14: calculateWidthInPixels
int calculateWidthInPixels(CvMat* P, float Y){
float W = 0.10; //width of road 20cm ~ 0.2m
float w = 0.0; //width of the roads in pixels
CvMat tmp;
//create P_1 (row 1 of matrix P)
CvMat *P_1 = cvCreateMat(1,4,CV_32FC1);
cvGetRow(P,&tmp,0); //row 0
cvCopy(&tmp,P_1,NULL);
CvMat *P_3 = cvCreateMat(1,4,CV_32FC1);
cvGetRow(P,&tmp,2); //row 2
cvCopy(&tmp,P_3,NULL);
CvMat* X_1 = cvCreateMat(4,1,CV_32FC1);
CvMat* X_2 = cvCreateMat(4,1,CV_32FC1);
CvMat* P_1_times_X_1 = cvCreateMat(1,1,CV_32FC1);
CvMat* P_3_times_X_1 = cvCreateMat(1,1,CV_32FC1);
CvMat* P_1_times_X_2 = cvCreateMat(1,1,CV_32FC1);
CvMat* P_3_times_X_2 = cvCreateMat(1,1,CV_32FC1);
cvmSet(X_1,0,0,W);
cvmSet(X_1,1,0,Y);
cvmSet(X_1,2,0,0.0);
cvmSet(X_1,3,0,1.0);
cvmSet(X_2,0,0,0);
cvmSet(X_2,1,0,Y);
cvmSet(X_2,2,0,0);
cvmSet(X_2,3,0,1);
cvMatMul(P_1,X_1,P_1_times_X_1);
cvMatMul(P_3,X_1,P_3_times_X_1);
cvMatMul(P_1,X_2,P_1_times_X_2);
cvMatMul(P_3,X_2,P_3_times_X_2);
w = ((cvmGet(P_1_times_X_1,0,0) /
cvmGet(P_3_times_X_1,0,0)
)
-
(cvmGet(P_1_times_X_2,0,0) /
cvmGet(P_3_times_X_2,0,0)
));
return int(w+0.5);
}
开发者ID:mksun2006,项目名称:road-paint-detector,代码行数:47,代码来源:main.cpp
示例15: printf
LabelMap AdaBoost::classify(CvMat* data)
{
if( !is_modelfile_loaded_ )
{
printf("no model file is loaded");
exit(0);
}
LabelMap classification_result;
LabelMap::iterator iter;
CvMat* responses = 0;
CvMat* var_type = 0;
CvMat* temp_sample = 0;
CvMat* weak_responses = 0;
int var_count=0;
int j=0, k=0;
var_count = data->cols;
temp_sample = cvCreateMat( 1, var_count + 1, CV_32F );
weak_responses = cvCreateMat( 1, this->classifier_.get_weak_predictors()->total, CV_32F );
int best_class = 0;
double max_sum = -DBL_MAX;
CvMat sample;
cvGetRow( data, &sample, 0 );
for( k = 0; k < var_count; k++ )
temp_sample->data.fl[k] = (float)sample.data.db[k];
for( j = 0; j < this->number_of_classes_; j++ )
{
temp_sample->data.fl[var_count] = (float)j;
this->classifier_.predict( temp_sample, 0,weak_responses );
double sum = cvSum( weak_responses ).val[0];
classification_result[((char)(j + FIRST_LABEL))] = sum;
if( max_sum < sum )
{
max_sum = sum;
best_class = j + FIRST_LABEL;
}
}
cvReleaseMat( &temp_sample );
cvReleaseMat( &weak_responses );
cvReleaseMat( &var_type );
cvReleaseMat( &data );
cvReleaseMat( &responses );
return classification_result;
}
开发者ID:EduFill,项目名称:hbrs-ros-pkg,代码行数:57,代码来源:adaboost.cpp
示例16: cvmSet
//============================================================================
void AAM_IC::CalcModifiedSD(CvMat* SD, const CvMat* dTx, const CvMat* dTy,
const CvMat* Jx, const CvMat* Jy)
{
int i, j;
//create steepest descent images
double* _x = dTx->data.db;
double* _y = dTy->data.db;
double temp;
for(i = 0; i < __shape.nModes()+4; i++)
{
for(j = 0; j < __paw.nPix(); j++)
{
temp = _x[3*j ]*cvmGet(Jx,j,i) +_y[3*j ]*cvmGet(Jy,j,i);
cvmSet(SD,i,3*j,temp);
temp = _x[3*j+1]*cvmGet(Jx,j,i) +_y[3*j+1]*cvmGet(Jy,j,i);
cvmSet(SD,i,3*j+1,temp);
temp = _x[3*j+2]*cvmGet(Jx,j,i) +_y[3*j+2]*cvmGet(Jy,j,i);
cvmSet(SD,i,3*j+2,temp);
}
}
//project out appearance variation (and linear lighting parameters)
const CvMat* B = __texture.GetBases();
CvMat* V = cvCreateMat(4+__shape.nModes(), __texture.nModes(), CV_64FC1);
CvMat SDMat, BMat;
cvGEMM(SD, B, 1., NULL, 1., V, CV_GEMM_B_T);
// Equation (63),(64)
for(i = 0; i < __shape.nModes()+4; i++)
{
for(j = 0; j < __texture.nModes(); j++)
{
cvGetRow(SD, &SDMat, i);
cvGetRow(B, &BMat, j);
cvScaleAdd(&BMat, cvScalar(-cvmGet(V,i,j)), &SDMat, &SDMat);
}
}
cvReleaseMat(&V);
}
开发者ID:HVisionSensing,项目名称:aamlibrary,代码行数:44,代码来源:AAM_IC.cpp
示例17: cvGetSize
/*!
\fn CvFaceSVMClassifier::Training_error(CvMat * train_data, CvMat * labels) const
*/
CvScalar CvFaceSVMClassifier::Training_error(CvMat * train_data, CvMat * labels) const
{
CvSize size = cvGetSize(labels);
int nsamples = size.width * size.height;
int numpositive = 0, numnegative = 0;
for(int i = 0; i < nsamples; i++)
{
double value = cvGetReal1D( labels, i );
if ( value == 1.0 )
numpositive++;
else if( value == 2.0 )
numnegative++;
}
assert((numpositive+numnegative) == nsamples );
size = cvGetSize( train_data );
int nelements = size.height;
CvMat * sample = cvCreateMat(1, nelements, CV_32FC1);
int numerror = 0, numtruepositive = 0, numfalsepositive = 0;
for(int i = 0; i < nsamples; i++)
{
cvGetRow( train_data, sample, i );
double pre_label = Predict( sample );
double label = cvGetReal1D( labels, i );
if((pre_label == 1.0)&&(label == 1.0))
{
numtruepositive++;
}
if(pre_label != label)
{
if((pre_label == 1.0)&&(label == 2.0))
{
numfalsepositive++;
}
//printf("%d ", i);
numerror++;
}
}
printf("\n\n");
double error = (double)numerror/(double)nsamples;
double tp_rate = (double)numtruepositive/(double)numpositive;
double fp_rate = (double)numfalsepositive/(double)numnegative;
cvReleaseMat(&sample);
CvScalar scalar = cvScalar(error, tp_rate, fp_rate, 0);
return scalar;
}
开发者ID:Slipperboy,项目名称:gaborboosting,代码行数:57,代码来源:cvfacesvmclassifier.cpp
示例18: GetDataFromFeatures
/*!
\fn CvFaceSVMClassifier::Training_error(CvGaborResponseData & gabordata, CvGaborFeaturePool & new_features) const
*/
CvScalar CvFaceSVMClassifier::Training_error(CvGaborResponseData & gabordata, CvGaborFeaturePool & new_features) const
{
CvMat * train_data = GetDataFromFeatures( gabordata, new_features );
CvMat * labels = GetLabelsFromFeatures( gabordata, new_features );
CvSize size = cvGetSize(labels);
int nsamples = size.width * size.height;
int numpositive = 0, numnegative = 0;
for(int i = 0; i < nsamples; i++)
{
double value = cvGetReal1D( labels, i );
if ( value == 1.0 )
numpositive++;
else if( value == 2.0 )
numnegative++;
}
assert((numpositive+numnegative) == nsamples );
int nelements = new_features.getSize();
CvMat * sample = cvCreateMat(1, nelements, CV_32FC1);
int numerror = 0, numtruepositive = 0, numfalsepositive = 0;
for(int i = 0; i < nsamples; i++)
{
cvGetRow( train_data, sample, i );
double pre_label = Predict( sample );
double label = cvGetReal1D( labels, i );
if((pre_label == 1.0)&&(label == 1.0))
{
numtruepositive++;
}
if(pre_label != label)
{
if((pre_label == 1.0)&&(label == 2.0))
numfalsepositive++;
numerror++;
}
}
double error = (double)numerror/(double)nsamples;
double tp_rate = (double)numtruepositive/(double)numpositive;
double fp_rate = (double)numfalsepositive/(double)numnegative;
cvReleaseMat(&sample);
cvReleaseMat(&train_data);
cvReleaseMat(&labels);
CvScalar scalar = cvScalar(error, tp_rate, fp_rate, 0);
return scalar;
}
开发者ID:Slipperboy,项目名称:gaborboosting,代码行数:57,代码来源:cvfacesvmclassifier.cpp
示例19: compute_reprojection_error
double compute_reprojection_error( const CvMat* object_points,
const CvMat* rot_vects, const CvMat* trans_vects,
const CvMat* camera_matrix, const CvMat* dist_coeffs,
const CvMat* image_points, const CvMat* point_counts,
CvMat* per_view_errors )
{
CvMat* image_points2 = cvCreateMat( image_points->rows,
image_points->cols, image_points->type );
int i, image_count = rot_vects->rows, points_so_far = 0;
double total_err = 0, err;
for( i = 0; i < image_count; i++ )
{
CvMat object_points_i, image_points_i, image_points2_i;
int point_count = point_counts->data.i[i];
CvMat rot_vect, trans_vect;
cvGetCols( object_points, &object_points_i,
points_so_far, points_so_far + point_count );
cvGetCols( image_points, &image_points_i,
points_so_far, points_so_far + point_count );
cvGetCols( image_points2, &image_points2_i,
points_so_far, points_so_far + point_count );
points_so_far += point_count;
cvGetRow( rot_vects, &rot_vect, i );
cvGetRow( trans_vects, &trans_vect, i );
cvProjectPoints2( &object_points_i, &rot_vect, &trans_vect,
camera_matrix, dist_coeffs, &image_points2_i,
0, 0, 0, 0, 0 );
err = cvNorm( &image_points_i, &image_points2_i, CV_L1 );
if( per_view_errors )
per_view_errors->data.db[i] = err/point_count;
total_err += err;
}
cvReleaseMat( &image_points2 );
return total_err/points_so_far;
}
开发者ID:janfrs,项目名称:kwc-ros-pkg,代码行数:40,代码来源:calibration.cpp
示例20: operator
virtual void operator()(const cv::BlockedRange& range) const
{
int begin = range.begin();
int end = range.end();
CvMat x;
CvMat miss;
for (int i=begin; i<end; ++i)
{
int j = idx ? idx->data.i[i] : i;
cvGetRow(samples, &x, j);
if (!missing)
{
predictions[i] = gbt->predict_serial(&x,0,0,slice);
}
else
{
cvGetRow(missing, &miss, j);
predictions[i] = gbt->predict_serial(&x,&miss,0,slice);
}
}
} // Sample_predictor::operator()
开发者ID:Rocky030,项目名称:opencv,代码行数:23,代码来源:gbt.cpp
注:本文中的cvGetRow函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论