• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++ cvmGet函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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



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

示例1: getOptFlow

Point2D getOptFlow(IplImage* currentFrame,Point2D p,IplImage* preFrame)
{
	Point2D temp;
	double b[2];
	b[0]=0;b[1]=0;
	
	double M11=0,M12=0,M22=0;
	for(int i = -OPTICAL_FLOW_POINT_AREA/2; i < OPTICAL_FLOW_POINT_AREA/2; i++)
	{
		for (int j = -OPTICAL_FLOW_POINT_AREA/2;j < OPTICAL_FLOW_POINT_AREA/2;j++)
		{
			temp = partial(currentFrame,Point2D(p.row+i,p.col+j));
			M11 += temp.dcol*temp.dcol;
			M12 += temp.dcol*temp.drow;
			M22 += temp.drow*temp.drow;
			b[0] += temp.dcol*(pixval8U(currentFrame,p.row+i,p.col+j)-pixval8U(preFrame,p.row+i,p.col+j));
			b[1] += temp.drow*(pixval8U(currentFrame,p.row+i,p.col+j)-pixval8U(preFrame,p.row+i,p.col+j));
		}
	}
	double a[] = {M11,M12,M12,M22};
	CvMat M=cvMat(2, 2, CV_64FC1, a);
	CvMat *Mi = cvCloneMat(&M);
	cvInvert(&M,Mi,CV_SVD);
	temp.col=0;
	temp.row=0;
	b[0] = -b[0];
	b[1] = -b[1];
	CvMat Mb = cvMat(2,1,CV_64FC1,b);
	CvMat *Mr = cvCloneMat(&Mb);
	cvMatMul( Mi, &Mb, Mr);
	double vy = (cvmGet(Mr,1,0));
	double vx = (cvmGet(Mr,0,0));
	
	return (Point2D(vy,vx));
}
开发者ID:Mrlonelei,项目名称:SIFT_tracking,代码行数:35,代码来源:utils.cpp


示例2: cvCreateMat

/** Computes the optical center of camera from camera projection matrix (http://en.wikipedia.org/wiki/Camera_matrix )
* @param pM : Camera projection matrix (3x4).
* @return : Optical center of camera.
*/
Point3D Utility::getOpticalCenter( CvMat* pM )
{
	CvMat *A = cvCreateMat(3, 3, CV_64FC1);
	CvMat *Ainv = cvCreateMat(3, 3, CV_64FC1);
	CvMat *b = cvCreateMat(3, 1, CV_64FC1);
	for(int i=0; i<3; ++i)
	{
		for(int j=0; j<3; ++j)
			cvmSet(A, i, j, cvmGet(pM,i,j));
		cvmSet(b, i, 0, cvmGet(pM, i,3));
	}
	cvInvert(A, Ainv);
	CvMat *oc = cvCreateMat(3, 1, CV_64FC1);
	cvMatMul(Ainv, b, oc);
	Point3D toRet;
	toRet.x = -1 * cvmGet(oc, 0, 0);				//NULL SPACE OF MATRIX pM
	toRet.y = -1 * cvmGet(oc, 1, 0);
	toRet.z = -1 * cvmGet(oc, 2, 0);

	cvReleaseMat(&A);
	cvReleaseMat(&Ainv);
	cvReleaseMat(&b);
	cvReleaseMat(&oc);
	return toRet;
}
开发者ID:dgrover,项目名称:flyspy,代码行数:29,代码来源:Utility.cpp


示例3: mCallBack

void mCallBack(int event,int x,int y, int flags, void * userdata)
{
	if(event == CV_EVENT_LBUTTONDOWN)
	{
		printf("x:%d y:%d\n",x,y);
		if(lb_type==TYPE_REC||lb_type==TYPE_PNT||lb_type==TYPE_SQR)
		{
			point_val[cur_point_ptr][0] = x;
			point_val[cur_point_ptr][1] = y;
			if(cur_point_ptr==1&&lb_type==TYPE_SQR)
			{
				cur_point_ptr = -1;    
			}
			nextPoint();
		}
		if(lb_type==TYPE_SP)
		{
			sp_val[(int)cvmGet(spmat,y,x)-1] = cur_point_ptr;
		}
		showImage();
	}
	if(event == CV_EVENT_RBUTTONDOWN)
	{
		if(lb_type==TYPE_SP)
		{
			sp_val[(int)cvmGet(spmat,y,x)-1] = -1;
		}
		showImage();
	}
}
开发者ID:ppdg123,项目名称:LBtool,代码行数:30,代码来源:lbt.cpp


示例4: PM

	void PM(CvMat *m, char *filename) {
		if (filename) {
			FILE *f = fopen(filename, "w");
			CvSize size = cvGetSize(m);
			char buf[50];
			for (int i = 0; i < size.height; i++) {
				fprintf(f, "{");
				for (int j = 0; j < size.width; j++) {
					sprintf(buf, "%f", cvmGet(m, i, j));
					fprintf(f, "%15s, ", buf);
				}
				fprintf(f, "},");
				fprintf(f, "\n");
			}
			fclose(f);
		}
		else {
			CvSize size = cvGetSize(m);
			for (int r = 0; r < size.height; r++) {
				for (int c = 0; c < size.width; c++)
					cout << cvmGet(m, r, c) << ' ';
				cout << endl;
			}
		}
	}
开发者ID:Joyhunter,项目名称:shadow_analysis,代码行数:25,代码来源:Util.cpp


示例5: pthread_mutex_lock

bica::ShapeList
SingleObjectModel::getGrDebugRel()
{
	pthread_mutex_lock(&(jpdaf->mutex));

	shapeListRel.clear();

	// Ball
	bica::Point3DPtr p(new bica::Point3D);
	p->x = estimate.getPositionInRelativeCoordinates().x;
	p->y = estimate.getPositionInRelativeCoordinates().y;;
	p->z = 0.0f;

	bica::EllipsePtr estEllipse(new bica::Ellipse);
	estEllipse->center = p;
	estEllipse->width = 4 * sqrt(cvmGet(jpdaf->objects[0]->error_cov_post, 0, 0));
	estEllipse->length = 4 * sqrt(cvmGet(jpdaf->objects[0]->error_cov_post, 1, 1));
	estEllipse->angle =  toDegrees(atan2(cvmGet(jpdaf->objects[0]->state_post, 1, 0),
			cvmGet(jpdaf->objects[0]->state_post, 0, 0)));
	estEllipse->z = 0.0f;
	estEllipse->color = bica::ORANGE;
	estEllipse->filled = true;
	estEllipse->opacity = 125;
	estEllipse->accKey = "o";
	estEllipse->label = "Ball";
	shapeListRel.push_back(estEllipse);

	pthread_mutex_unlock(&(jpdaf->mutex));

	return shapeListRel;
}
开发者ID:abellagonzalo,项目名称:go2012,代码行数:31,代码来源:SingleObjectModel.cpp


示例6: cvmGet

int LDARec::ActionRecognition(double* input){//Input: 1*6 vector


	vector <double> dist;
	dist.resize(cnum);

	ydata[0] = input[0];
	ydata[1] = input[1];
	ydata[2] = input[2];
	ydata[3] = input[3];		
	ydata[4] = input[4];
	ydata[5] = input[5];	
	//Compute one-dimensionl result

	//First: only compare once!

	int count = 0;


	for(int i=0;i<cnum;++i){		
		for(int j=i+1;j<cnum;++j){

			double x1d = 0;

			for(int l=0;l<Ws.cols;++l)
				x1d += cvmGet(&y, 0, l) * cvmGet(&Ws, count, l);
		    
			
		    double d1 = fabs(x1d - cvmGet(&mean1d, count, 0));
			double d2 = fabs(x1d - cvmGet(&mean1d, count, 1));//i-th with j-th

			if(d2>d1){//
				dist[i] +=1;
				dist[j] -=1;
			}
			else{
				dist[i] -=1;
				dist[j] +=1;
			}

			++count;

		}



	}

	int midx = 0;
	double mval = dist[0];

	for(int i=0;i<dist.size();++i){
		if(dist[i]>mval)
			midx = i,mval = dist[i];
	}

	return midx;

}
开发者ID:TerAtO86,项目名称:PCLTest,代码行数:59,代码来源:LDARec.cpp


示例7: Res_Func2

void Res_Func2(CvMat *vectX,CvMat *res)
{
    double x = cvmGet(vectX,0,0);
    double y = cvmGet(vectX,1,0);
    cvmSet(res,0,0,(x-2)*(x-2)+(y+3)*(y+3));
    cvmSet(res,1,0,x+y);

    return;
}
开发者ID:AGAT172,项目名称:opencv,代码行数:9,代码来源:levmar.cpp


示例8: display_CvMat

void display_CvMat(CvMat * arrayToDisplay, int arraySize)
{
    int i;
    printf("\n\n\tCvMat Coordinates (x;y)\n\n");
    for(i=0;i<arraySize;i++)
    {
        printf("(%.1f;%.1f)\t",cvmGet(arrayToDisplay,i,0),cvmGet(arrayToDisplay,i,1));
    }
}
开发者ID:moumen19,项目名称:robotiquecartemere,代码行数:9,代码来源:cameraCalibration.c


示例9: sin

CvMat* AbstractCamera::computeRtMatrix(double a, double b, double g, double tX, double tY, double tZ) {

	//--- Represent 3d rotation with euler angles

	double sinG = sin(g);
	double cosG = cos(g);
	CvMat* rZg = cvCreateMat(3, 3, CV_32FC1);
	cvSetZero(rZg);
	cvmSet(rZg, 0, 0, cosG);
	cvmSet(rZg, 0, 1, -sinG);
	cvmSet(rZg, 1, 0, sinG);
	cvmSet(rZg, 1, 1, cosG);
	cvmSet(rZg, 2, 2, 1.0f);

	double sinB = sin(b);
	double cosB = cos(b);
	CvMat* rXb = cvCreateMat(3, 3, CV_32FC1);
	cvSetZero(rXb);
	cvmSet(rXb, 0, 0, 1.0f);
	cvmSet(rXb, 1, 1, cosB);
	cvmSet(rXb, 1, 2, -sinB);
	cvmSet(rXb, 2, 1, sinB);
	cvmSet(rXb, 2, 2, cosB);

	double sinA = sin(a);
	double cosA = cos(a);
	CvMat* rZa = cvCreateMat(3, 3, CV_32FC1);
	cvSetZero(rZa);
	cvmSet(rZa, 0, 0, cosA);
	cvmSet(rZa, 0, 1, -sinA);
	cvmSet(rZa, 1, 0, sinA);
	cvmSet(rZa, 1, 1, cosA);
	cvmSet(rZa, 2, 2, 1.0f);

	CvMat* rotationMatrix = cvCreateMat(3, 3, CV_32FC1);
	cvMatMul(rZg, rXb, rotationMatrix);
	cvMatMul(rotationMatrix, rZa, rotationMatrix);

	cvReleaseMat(&rZg);
	cvReleaseMat(&rXb);
	cvReleaseMat(&rZa);

	//--- [R|T] ; First camera rotation and translation matrix
	CvMat* rtMatrix = cvCreateMat(3, 4, CV_32FC1);
	for (int i = 0; i < 3; i++) {
		cvmSet(rtMatrix, i, 0, cvmGet(rotationMatrix, i, 0));
		cvmSet(rtMatrix, i, 1, cvmGet(rotationMatrix, i, 1));
		cvmSet(rtMatrix, i, 2, cvmGet(rotationMatrix, i, 2));
	}
	cvmSet(rtMatrix, 0, 3, tX);
	cvmSet(rtMatrix, 1, 3, tY);
	cvmSet(rtMatrix, 2, 3, tZ);

	cvReleaseMat(&rotationMatrix);

	return rtMatrix;
}
开发者ID:M-Samoht,项目名称:OpenMocap,代码行数:57,代码来源:AbstractCamera.cpp


示例10: saveRenseMatrix

void saveRenseMatrix(CvMat *matrixRense){
	sprintf(renseParameters, "%lf\n%lf\n%lf\n%lf\n",
		cvmGet(matrixRense,0,0), 
		cvmGet(matrixRense,1,0), 
		cvmGet(matrixRense,2,0),
		cvmGet(matrixRense,3,0)
	);
	
}
开发者ID:fsi-katami,项目名称:RTCCatalog2010_OpenCV,代码行数:9,代码来源:ImageCalibration.cpp


示例11: cvmGet

QString AbstractCamera::getDistorcionCoefficientsInfo() {

	float k1 = cvmGet(_distortionCoefficients, 0, 0);
	float k2 = cvmGet(_distortionCoefficients, 1, 0);
	float p1 = cvmGet(_distortionCoefficients, 2, 0);
	float p2 = cvmGet(_distortionCoefficients, 3, 0);

	return QString("\n\nDistorcion Coefficients:\nk1 = %1 k2 = %2\np1 = %3 p2 = %4").arg(k1).arg(k2).arg(p1).arg(p2);
}
开发者ID:M-Samoht,项目名称:OpenMocap,代码行数:9,代码来源:AbstractCamera.cpp


示例12: cvmGet

double PerformanceMatrix::getConfidence(int sym){
	double conf = 0.0;
	double val = 0.0;
	for(size_t i = 0; i < PerformanceMatrix::size; i++){
		val += cvmGet(pm, i, sym);
	}
	conf = cvmGet(pm, sym, sym) / val;
	return conf;
}
开发者ID:binary42,项目名称:elars,代码行数:9,代码来源:PerformanceMatrix.cpp


示例13: cvmGet

void CDataOut::Cam()
{
  CamFile<< cvmGet(pEstimator->pDataCam->translation,0,0)<<" ";
  CamFile<< cvmGet(pEstimator->pDataCam->translation,1,0)<<" ";
  CamFile<< cvmGet(pEstimator->pDataCam->translation,2,0)<<" ";
  CamFile<<"65000 ";
  CamFile<<"65000 ";
  CamFile<<endl;
}
开发者ID:dirmich,项目名称:3dslam,代码行数:9,代码来源:dataout.cpp


示例14: quasi_poisson_solver

int quasi_poisson_solver(IplImage *im_src, IplImage *im_dst, IplImage *im_mask, int channel, int *offset){
    int i, j, loop, neighbor, count_neighbors, ok;
    float error, sum_f, sum_vpq, fp;
    int naddr[NUM_NEIGHBOR][2]={{-1, 0}, {0, -1}, {0, 1}, {1, 0}};
    CvMat* im_new = cvCreateMat(im_dst->height, im_dst->width, CV_64F);
    for(i=0; i<im_dst->height; i++){
        for(j=0; j<im_dst->width; j++){
            cvmSet(im_new, i, j, double(uchar(im_dst->imageData[(i)*im_dst->widthStep + (j)*im_dst->nChannels + channel])));
        }
    }
    
    for(loop=0; loop<LOOP_MAX; loop++){
        if (loop%100==0) {
            printf("loop:%d\n",loop);
        }
        ok = 1;
        for(i=0; i<im_mask->height; i++){
            for(j=0; j<im_mask->width; j++){
                if(int((uchar)im_mask->imageData[i*im_mask->widthStep + j]) > 0){
                    sum_f=0.0;
                    sum_vpq=0.0;
                    count_neighbors=0;
                    for(neighbor=0; neighbor<NUM_NEIGHBOR; neighbor++){
                        if(i+offset[0]+naddr[neighbor][0] >= 0 && j+offset[1]+naddr[neighbor][1] >= 0 && i+offset[0]+naddr[neighbor][0] < im_dst->height && j+offset[1]+naddr[neighbor][1] < im_dst->width){
                            sum_f += cvmGet(im_new, i+offset[0]+naddr[neighbor][0], j+offset[1]+naddr[neighbor][1]);
                            sum_vpq += float((uchar)im_src->imageData[(i)*im_src->widthStep + (j)*im_src->nChannels + channel]) - float((uchar)im_src->imageData[(i+naddr[neighbor][0])*im_src->widthStep + (j+naddr[neighbor][1])*im_src->nChannels + channel]);
                            count_neighbors++;
                        }
                    }
                    fp = (sum_f + sum_vpq)/(float)count_neighbors;
                    error = fabs(fp - cvmGet(im_new, i+offset[0], j+offset[1]));
                    if(ok && error > EPS * (1+fabs(fp))){
                        ok = 0;
                    }
                    cvmSet(im_new, i+offset[0], j+offset[1], fp);
                }
            }
        }
        if(ok){
            break;
        }
    }
    
    for(i=0; i<im_dst->height; i++){
        for(j=0; j<im_dst->width; j++){
            if(cvmGet(im_new, i, j) > 255){
                cvmSet(im_new, i, j, 255.0);
            }
            else if(cvmGet(im_new, i, j) < 0){
                cvmSet(im_new, i, j, 0.0);
            }
            im_dst->imageData[(i)*im_dst->widthStep + (j)*im_dst->nChannels + channel] = (uchar)cvmGet(im_new, i, j);
        }
    }
    return 1;
}
开发者ID:guozanhua,项目名称:FaceGenerator,代码行数:56,代码来源:expanding_face.cpp


示例15: cvCreateMat

int DoubleSidesModelFitting::SingleFitList(const vector<CvPoint>& list, int horizon)
{
	double belief;

	if (list.empty())
	{
		return DSMF_FAIL_TOO_SHORT;
	}

	if (list.size() < DSMF_RANSAC_MIN_POINTS)
	{
		return DSMF_FAIL_TOO_SHORT;
	}

	matFullA = cvCreateMat(list.size(), 3, CV_32FC1);
	matFullB = cvCreateMat(list.size(), 1, CV_32FC1);
	matFullDiff = cvCreateMat(list.size(), 1, CV_32FC1);

	for (size_t i = 0; i < list.size(); i++)
	{
		cvmSet(matFullA, i, 0, 1.0 / (list.at(i).y - horizon));
		cvmSet(matFullA, i, 1, (list.at(i).y - horizon));
		cvmSet(matFullA, i, 2, 1.0);
		cvmSet(matFullB, i, 0, list.at(i).x);
	}

	int result = SingleFullFit(list, horizon, belief);

	if(result == DSMF_SUCCESS)
	{
		curve = cvScalar(cvmGet(matOptX, 0, 0), cvmGet(matOptX, 1, 0), cvmGet(matOptX, 2, 0), belief);
	}
	else
	{
		curve = cvScalar(0);
	}

	if (matFullA)
	{
		cvReleaseMat(&matFullA);
		matFullA = NULL;
	}
	if (matFullB)
	{
		cvReleaseMat(&matFullB);
		matFullB = NULL;
	}
	if (matFullDiff)
	{
		cvReleaseMat(&matFullDiff);
		matFullDiff = NULL;
	}

	return result;
}
开发者ID:xllau,项目名称:HDLCamara,代码行数:55,代码来源:DoubleSidesModelFitting.cpp


示例16: main

int main (int argc, char **argv)
{
	int i, j;
	int nrow = 3;
	int ncol = 3;
	CvMat *src, *dst, *mul;
	double det;
	CvRNG rng = cvRNG (time (NULL));      /* 乱数の初期化 */
	// (1) 行列のメモリ確保
	src = cvCreateMat (nrow, ncol, CV_32FC1);
	dst = cvCreateMat (ncol, nrow, CV_32FC1);
	mul = cvCreateMat (nrow, nrow, CV_32FC1);
	// (2) 行列srcに乱数を代入
	printf ("src\n");
	cvmSet (src, 0, 0, 1);
	for (i = 0; i < src->rows; i++)
	{
		for (j = 0; j < src->cols; j++)
		{
			cvmSet (src, i, j, cvRandReal (&rng));
			printf ("% lf\t", cvmGet (src, i, j));
		}
		printf ("\n");
	}
	// (3) 行列srcの逆行列を求めて,行列dstに代入
	det = cvInvert (src, dst, CV_SVD);
	// (4) 行列srcの行列式を表示
	printf ("det(src)=%lf\n", det);
	// (5) 行列dstの表示
	printf ("dst\n");
	for (i = 0; i < dst->rows; i++)
	{
		for (j = 0; j < dst->cols; j++)
		{
			printf ("% lf\t", cvmGet (dst, i, j));
		}
		printf ("\n");
	}
	// (6) 行列srcとdstの積を計算して確認
	cvMatMul (src, dst, mul);
	printf ("mul\n");
	for (i = 0; i < mul->rows; i++)
	{
		for (j = 0; j < mul->cols; j++)
		{
			printf ("% lf\t", cvmGet (mul, i, j));
		}
		printf ("\n");
	}
	// (7) 行列のメモリを開放
	cvReleaseMat (&src);
	cvReleaseMat (&dst);
	cvReleaseMat (&mul);
	return 0;
}
开发者ID:moho110,项目名称:Machine-learning,代码行数:55,代码来源:matrix.cpp


示例17: cvmGet

/*IplImage* HomographyCalculationThread::rectifyImage(IplImage* inImage, IplImage* outImage,double oldFirstApexX,double oldFirstApexY,double width,double height) 
{
	double x1 = 0;
	double x2 = 0;
	double x3 = 0;
	double y_position = 0;
	double x_position = 0;
	uchar* data = (uchar *)inImage->imageData;
	uchar* dataOut = (uchar *)outImage->imageData;
	for(int row=0;row<height;row++) {

		for(int col=0;col<width;col++) {

			x1 = cvmGet(mHMatrix,0,0) * col + cvmGet(mHMatrix,0,1) * row + cvmGet(mHMatrix,0,2);
			x2 = cvmGet(mHMatrix,1,0) * col + cvmGet(mHMatrix,1,1) * row + cvmGet(mHMatrix,1,2);
			x3 = cvmGet(mHMatrix,2,0) * col + cvmGet(mHMatrix,2,1) * row + 1;
			y_position = x2/x3 + oldFirstApexY;

			if(inImage->height < y_position) {
				y_position = (inImage->height-1);
			}

			x_position = x1/x3 + oldFirstApexX;
			if(inImage->width < x_position) {
				x_position = (inImage->width-1);
			}

			int temp_y = (int)y_position;
			int temp_x = (int)x_position;

			if(dataOut!=NULL && data!=NULL) {
				dataOut[row*outImage->widthStep+col*outImage->nChannels] = data[temp_y*inImage->widthStep+temp_x*inImage->nChannels];
				dataOut[row*outImage->widthStep+col*outImage->nChannels+1] = data[temp_y*inImage->widthStep+temp_x*inImage->nChannels+1];
				dataOut[row*outImage->widthStep+col*outImage->nChannels+2] = data[temp_y*inImage->widthStep+temp_x*inImage->nChannels+2];
			}
		}
	}
	cvReleaseMat(&mHMatrix);
	return outImage;
}
*/
void HomographyCalculationThread::correctHomographicMatrix(IplImage* inImage,CvMat* invH,double lastPictureApexX,double lastPictureApexY,double width,double height)
{
	CvMat *hCoeff = cvCreateMat(3,3,CV_32FC1);
	CvMat* multipleMat = cvCreateMat(3,3,CV_32FC1);
	double old_height = inImage->height;
	double y_position = lastPictureApexY;
	double x_position = lastPictureApexX;
	for (int i=1;i<10;i++) {
		double x1 = cvmGet(invH,0,0) * (x_position) + cvmGet(invH,0,1) * (y_position) + cvmGet(invH,0,2);
		double x2 = cvmGet(invH,1,0) * (x_position) + cvmGet(invH,1,1) * (y_position) + cvmGet(invH,1,2);
		double x3 = cvmGet(invH,2,0) * (x_position) + cvmGet(invH,2,1) * (y_position) + 1;
		x1 = x1/x3;
		x2 = x2/x3;

		double H_coeff = ((x1/width)+(x2/height))/2 - 0.01;
		for(int coeffRow=0;coeffRow<3;coeffRow++) {
			for(int coeffCol=0;coeffCol<3;coeffCol++) {
				cvmSet(hCoeff,coeffRow,coeffCol,H_coeff);
				cvmSet(multipleMat,coeffRow,coeffCol,cvmGet(mHMatrix,coeffRow,coeffCol));
			}
		}
		cvMul(multipleMat,hCoeff,mHMatrix);
		cvInvert(mHMatrix,invH);
	}

	cvReleaseMat(&multipleMat);
	cvReleaseMat(&hCoeff);
}
开发者ID:Damian-Lopata,项目名称:ImagePerspectiveRectification,代码行数:69,代码来源:HomographyCalculationThread.cpp


示例18: GetCameraParameterCV

void GetCameraParameterCV(  TomGine::tgCamera::Parameter& camPar, 
                            CvMat *pImgSize,
                            CvMat *pIntrinsicDistort,
                            CvMat *pDistortions,
                            const cv::Mat &R, const cv::Mat &T)
{

    if(pImgSize){
        camPar.width = cvmGet(pImgSize, 0,0);
        camPar.height = cvmGet(pImgSize, 1,0);
    }else{
        throw std::runtime_error("[utilities::GetCameraParameterCV] Wrong format for CvMat pImgSize");
    }

    if(pIntrinsicDistort){
        camPar.fx = cvmGet(pIntrinsicDistort, 0,0);
        camPar.fy = cvmGet(pIntrinsicDistort, 1,1);
        camPar.cx = cvmGet(pIntrinsicDistort, 0,2);
        camPar.cy = cvmGet(pIntrinsicDistort, 1,2);
    }else{
        throw std::runtime_error("[utilities::GetCameraParameterCV] Wrong format for CvMat pIntrinsicDistort");
    }

    if(pDistortions){
        camPar.k1 = cvmGet(pDistortions, 0,0);
        camPar.k2 = cvmGet(pDistortions, 1,0);
        camPar.k3 = cvmGet(pDistortions, 2,0);
        //camPar.k4 = cvmGet(pIntrinsicDistort, 3,0);
        camPar.p1 = 0.0f;
        camPar.p2 = 0.0f;
    }else{
        throw std::runtime_error("[utilities::GetCameraParameterCV] Wrong format for CvMat pDistortions");
    }

    camPar.zFar = 5.0f;
    camPar.zNear = 0.1f;

    // Invert pose of calibration pattern to get pose of camera
    vec3 r;
    cv::Mat Rm = cv::Mat( 3,3, CV_64F );
    cv::Mat rvec = cv::Mat( 3,1, CV_64F );
    cv::Mat tvec = cv::Mat( 3,1, CV_64F );

    cv::Rodrigues(R, Rm);

    cv::transpose(Rm, Rm);

    tvec = -Rm * T;				// t = -R^T * t

    cv::Rodrigues(Rm, rvec);

    r.x = (float)rvec.at<double>(0,0);
    r.y = (float)rvec.at<double>(1,0);
    r.z = (float)rvec.at<double>(2,0);
    camPar.pos.x = tvec.at<double>(0,0);
    camPar.pos.y = tvec.at<double>(1,0);
    camPar.pos.z = tvec.at<double>(2,0);

    camPar.rot.fromRotVector(r);
}
开发者ID:achuwilson,项目名称:perception_blort,代码行数:60,代码来源:utilities.hpp


示例19: Jac_Func2

//tests
void Jac_Func2(CvMat *vectX,CvMat *Jac)
{
    double x = cvmGet(vectX,0,0);
    double y = cvmGet(vectX,1,0);
    cvmSet(Jac,0,0,2*(x-2));
    cvmSet(Jac,0,1,2*(y+3));

    cvmSet(Jac,1,0,1);
    cvmSet(Jac,1,1,1);
    return;
}
开发者ID:AGAT172,项目名称:opencv,代码行数:12,代码来源:levmar.cpp


示例20: cvCreateMat

void FacePredict::FaceSynthesis(AAM_Shape &shape, CvMat* texture, IplImage* newImage)
{
	double thisfacewidth = shape.GetWidth();
	shape.Scale(stdwidth / thisfacewidth);
	shape.Translate(-shape.MinX(), -shape.MinY());

	AAM_PAW paw;
	CvMat* points = cvCreateMat (1, __shape.nPoints(), CV_32FC2);
	CvMemStorage* storage = cvCreateMemStorage(0);
	paw.Train(shape, points, storage, __paw.GetTri(), false);  //the actual shape

	__AAMRefShape.Translate(-__AAMRefShape.MinX(), -__AAMRefShape.MinY());  //refShape, central point is at (0,0);translate the min to (0,0)
	double minV, maxV;
	cvMinMaxLoc(texture, &minV, &maxV);
	cvConvertScale(texture, texture, 1/(maxV-minV)*255, -minV*255/(maxV-minV));

	cvZero(newImage);

	int x1, x2, y1, y2, idx1 = 0, idx2 = 0;
	int tri_idx, v1, v2, v3;
	int minx, miny, maxx, maxy;
	minx = shape.MinX(); miny = shape.MinY();
	maxx = shape.MaxX(); maxy = shape.MaxY();
	for(int y = miny; y < maxy; y++)
	{
		y1 = y-miny;
		for(int x = minx; x < maxx; x++)
		{
			x1 = x-minx;
			idx1 = paw.Rect(y1, x1);
			if(idx1 >= 0)
			{
				tri_idx = paw.PixTri(idx1);
				v1 = paw.Tri(tri_idx, 0);
				v2 = paw.Tri(tri_idx, 1);
				v3 = paw.Tri(tri_idx, 2);
		
				x2 = paw.Alpha(idx1)*__AAMRefShape[v1].x + paw.Belta(idx1)*__AAMRefShape[v2].x +  
					paw.Gamma(idx1)*__AAMRefShape[v3].x;
				y2 = paw.Alpha(idx1)*__AAMRefShape[v1].y + paw.Belta(idx1)*__AAMRefShape[v2].y +  
					paw.Gamma(idx1)*__AAMRefShape[v3].y;
				
				idx2 = __paw.Rect(y2, x2);
				if(idx2 < 0) continue;

				CV_IMAGE_ELEM(newImage, byte, y, 3*x) = cvmGet(texture, 0, 3*idx2);
				CV_IMAGE_ELEM(newImage, byte, y, 3*x+1) = cvmGet(texture, 0, 3*idx2+1);
				CV_IMAGE_ELEM(newImage, byte, y, 3*x+2) = cvmGet(texture, 0, 3*idx2+2);
			}
		}
	}
	cvReleaseMat(&points);
	cvReleaseMemStorage(&storage);
}
开发者ID:timedcy,项目名称:face,代码行数:54,代码来源:FacePredict.cpp



注:本文中的cvmGet函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ cvmx_read_csr函数代码示例发布时间:2022-05-30
下一篇:
C++ cvfixnum函数代码示例发布时间:2022-05-30
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap