本文整理汇总了C++中cvGetRow函数的典型用法代码示例。如果您正苦于以下问题:C++ cvGetRow函数的具体用法?C++ cvGetRow怎么用?C++ cvGetRow使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cvGetRow函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的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);
}
}
示例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;
}
示例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);
}
}
}
示例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;
}
示例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;
}
示例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;
}
示例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;
}
示例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);
}
示例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);
}
}
}
示例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);
}
示例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;
}
示例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;
}
}
}
}
示例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;
}
示例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);
}
示例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;
}