Exemplo n.º 1
0
void WalletLegacy::reset() {
  try {
    std::error_code saveError;
    std::stringstream ss;
    {
      SaveWaiter saveWaiter;
      WalletHelper::IWalletRemoveObserverGuard saveGuarantee(*this, saveWaiter);
      save(ss, false, false);
      saveError = saveWaiter.waitSave();
    }

    if (!saveError) {
      shutdown();
      InitWaiter initWaiter;
      WalletHelper::IWalletRemoveObserverGuard initGuarantee(*this, initWaiter);
      initAndLoad(ss, m_password);
      initWaiter.waitInit();
    }
  } catch (std::exception& e) {
    std::cout << "exception in reset: " << e.what() << std::endl;
  }
}
Exemplo n.º 2
0
int main(){

	initAndLoad(cv::Mat::eye(4,4,CV_32F), cv::Mat::eye(4,4,CV_32F), &vidRecord, &wcSkeletons, "map000000_aoto4_edit/video/", true);
	zeroWorldCoordinateSkeletons(cv::Mat::eye(4,4,CV_32F), &vidRecord, &wcSkeletons);
	setCameraMatrixTexture(KINECT::loadCameraParameters());
	setCameraMatrixScene(KINECT::loadCameraParameters());
	cylinderBody.Load("map000000-custCB/");

	cv::namedWindow("rgb");
	cv::namedWindow("3d", CV_GUI_NORMAL);
	cv::setMouseCallback("3d", onMouse);

	frame=0;
	angle_y = 0;
	angle_x = 0;
	trans = cv::Mat::eye(4,4,CV_32F);

	calculateSkeletonOffsetPoints(vidRecord, wcSkeletons, cylinderBody);
	boundingBoxLerp = cv::Rect (0,0,WIDTH,HEIGHT);
	lc = generateLerpCorners(boundingBoxLerp);

	while(true){
		cv::Mat tex_ = uncrop(vidRecord[frame].videoFrame);
		cv::Mat tex(tex_.size(), CV_8UC4, cv::Scalar(255,255,255,255));
		int from_to[] = { 0,0, 1,1, 2,2};
		cv::mixChannels(&tex_,1,&tex,1,from_to,3);

		cv::Mat _3d(HEIGHT, WIDTH, CV_8UC4, cv::Scalar(0,0,0,255));

		cv::Vec3f sCenter = calcSkeleCenter(vidRecord[frame].kinectPoints);
		trans = getTranslationMatrix(sCenter) * mat3_to_mat4(getRotationMatrix(cv::Vec3f(0,1,0), angle_y)) * mat3_to_mat4(getRotationMatrix(cv::Vec3f(1,0,0), angle_x)) * getTranslationMatrix(-sCenter);

		ghostdraw_parallel(frame, cv::Mat::eye(4,4,CV_32F), vidRecord, wcSkeletons, cylinderBody, Limbrary(), tex, cv::Mat(), GD_CYL);
		ghostdraw_parallel(frame, trans, vidRecord, wcSkeletons, cylinderBody, Limbrary(), _3d, cv::Mat(), GD_CYL);

		cv::Scalar goodColor(50, 200, 250);
		cv::Scalar badColor(20, 20, 250);

		for(int joint=0;joint<NUMJOINTS;++joint)
		{
			cv::Scalar color;
			if (wcSkeletons[frame].states[joint] < 1)
				color = badColor;
			else
				color = goodColor;

			{
				cv::Vec3f jv = mat_to_vec3(wcSkeletons[frame].points.col(joint));
				cv::Vec2f jv2 = mat4_to_vec2(getCameraMatrixScene() * vec3_to_mat4(jv));
				cv::Point pj(jv2(0), jv2(1));

				cv::circle(tex,pj,2,color,-1);
			}

			{
				cv::Vec3f jv = mat_to_vec3(trans * wcSkeletons[frame].points.col(joint));
				cv::Vec2f jv2 = mat4_to_vec2(getCameraMatrixScene() * vec3_to_mat4(jv));
				cv::Point pj(jv2(0), jv2(1));

				cv::circle(_3d,pj,3,color,-1);
			}
		}
		std::stringstream frameSS;
		frameSS << frame;

		cv::putText(tex, frameSS.str(), cv::Point(30, 30), CV_FONT_HERSHEY_PLAIN, 2, cv::Scalar(0, 255, 0), 3);
		cv::putText(_3d, frameSS.str(), cv::Point(30, 30), CV_FONT_HERSHEY_PLAIN, 2, cv::Scalar(255, 0, 255), 3);

		cv::imshow("rgb", tex);
		cv::imshow("3d", _3d);
		char in = cv::waitKey(10);

		switch(in){
		case 'q':
			return 0;
		case 'z':
			--frame;
			while(vidRecord[frame].videoFrame.mat.empty()){
				--frame;
			}
			if(frame < 0) frame = 0;
			break;
		case 'x':
			++frame;
			if (frame >= vidRecord.size()) frame = vidRecord.size() - 1;
			while(vidRecord[frame].videoFrame.mat.empty()){
				++frame;
				if (frame >= vidRecord.size()) frame = vidRecord.size() - 1;
			}
			break;
		case 'd':
			if (lastjoint != -1){
				if (wcSkeletons[frame].states[lastjoint] < 1){
					wcSkeletons[frame].states[lastjoint] = 1;
				}
				else{
					wcSkeletons[frame].states[lastjoint] = 0.5;
				}
			}
		case 'r':
			angle_y = 0;
			angle_x = 0;
			break;
		case 'c':
			alljoints = !alljoints;
			break;
		case 's':
			
			for(int i=0;i<vidRecord.size();++i){
				vidRecord[i].kinectPoints = wcSkeletons[i];

				//if(!vidRecord[i].cam2World.empty())
				//{
				//	vidRecord[i].kinectPoints.points = vidRecord[i].cam2World.inv() * vidRecord[i].kinectPoints.points;
				//}
			}

			SaveVideo(&vidRecord, getCameraMatrixScene(),  "map000000_aoto4_edit/video/");
			break;
		}
	}
}
Exemplo n.º 3
0
int main(){

	std::ofstream of;
	of.open("benchmark/score_out.txt");
	std::cerr.rdbuf(of.rdbuf());

	cv::Mat K2P = cv::Mat::eye(4,4,CV_32F);

#if PTAMM_STYLE == 1
	K2P = getScaleMatrix(-1,-1,1);
#endif

	initAndLoad(cv::Mat::eye(4,4,CV_32F),K2P,&vidRecord,&wcSkeletons,"map000000_whitesweater_edit/video/",false);

#if PTAMM_STYLE == 1
	LoadWorldCoordinateSkeletons(wcSkeletons, "map000000_whitesweater/GhostGame.xml");
#else
	zeroWorldCoordinateSkeletons(cv::Mat::eye(4,4,CV_32F),&vidRecord,&wcSkeletons);
#endif
	
	cv::Vec3f skeleCenter = calcSkeleCenter(wcSkeletons[0]);

	//cv::Mat shittyTransformMatrix = /*getTranslationMatrix(cv::Vec3f(0,0,1000)); */ getRotationMatrix4(cv::Vec3f(1,0,1), CV_PI);
	//cv::FileStorage fs("ptammat.yml", cv::FileStorage::READ);
	//fs["matCfW"] >> shittyTransformMatrix;
	//for(int i=0;i<wcSkeletons.size();++i){
	//	wcSkeletons[i].points = shittyTransformMatrix * wcSkeletons[i].points;
	//}

	cylinderBody.Load("map000000-custCB/");

#if PTAMM_STYLE == 1
	cylinderBody.radiusModifier = 0.658017;
#endif

	calculateSkeletonOffsetPoints(vidRecord,wcSkeletons,cylinderBody);
	//limbrary.Load("map000000_whitesweater-custCB-clust/");
	limbrary.Load("map000000_whitesweater_edit-custCB-clean-test/");

	//LoadStatusRecord("map000000_whitesweater/estim/", estimRecord);
	//std::vector<Skeleton> wcSkeletonsEstim = wcSkeletons;
	//interpolate(estimRecord, wcSkeletonsEstim);

	cv::Vec3f translation(0,0,0);
	cv::Vec3f rotation(0,CV_PI/2,0);


	cv::Mat im(480, 640, CV_8UC4, cv::Scalar(255,255,255,0));
	int frame = 100;
	int r = 8;
	int maxr = 16-4;
	rotation(1) = CV_PI/2 - r * (CV_PI/16);

	int p = 8;
	rotation(0) = CV_PI/2 - (CV_PI/16) * p;

	rotation(2) = 0;

	//smoothKinectPoints(wcSkeletons, 0.5);

	bool play = true;
	while(true){

		{

			unsigned char options = GD_DRAW ;// | GD_NOWEIGHT | GD_NOLIMBRARY;
			cv::Mat draw = im.clone();
			cv::Mat zBuf;

			cv::Mat transform = getTranslationMatrix(translation) * getTranslationMatrix(skeleCenter) *
				mat3_to_mat4(getRotationMatrix(cv::Vec3f(1,0,0),rotation(0)) * getRotationMatrix(cv::Vec3f(0,1,0),rotation(1)) * getRotationMatrix(cv::Vec3f(0,0,1),rotation(2)))
				* getTranslationMatrix(-skeleCenter);

#if PTAMM_STYLE == 1
			cv::FileStorage fs("ptammat.yml", cv::FileStorage::READ);
			fs["matCfW"] >> transform;
		
			transform = getTranslationMatrix(translation) * getTranslationMatrix(skeleCenter) *
				mat3_to_mat4(getRotationMatrix(cv::Vec3f(1,0,0),rotation(0)) * getRotationMatrix(cv::Vec3f(0,1,0),rotation(1)) * getRotationMatrix(cv::Vec3f(0,0,1),rotation(2)))
				* getTranslationMatrix(-skeleCenter) * transform;
#endif

			ScoreList scoreList[NUMLIMBS];


			ghostdraw_parallel(frame, K2P.inv() * transform /* shittyTransformMatrix.inv()*/, vidRecord, wcSkeletons, cylinderBody, limbrary, draw, zBuf, options, scoreList);

			/*
			//hybrid
			cv::Mat draw2 = im.clone();
			options = GD_CYL ;
		
			ghostdraw_parallel(frame, transform, vidRecord, wcSkeletons, cylinderBody, limbrary, draw2, options);

			cv::Mat candidate = vidRecord[scoreList[0].front().first].videoFrame.mat;

			cv::Mat cand_resize(HEIGHT, WIDTH, CV_8UC3, cv::Scalar(200,200,200));
			int gap_y = (HEIGHT-candidate.rows)/2;
			int gap_x = (HEIGHT-candidate.cols)/2;
			//candidate.copyTo(cand_resize(cv::Range(gap_y,gap_y + candidate.rows), cv::Range(gap_x,gap_x+candidate.cols)));
			candidate.copyTo(draw(cv::Range(0,candidate.rows), cv::Range(0,candidate.cols)));
			cv::rectangle(draw,cv::Rect(0,0,candidate.cols,candidate.rows),cv::Scalar(200,150,100));

			cv::Mat combine(HEIGHT*2,WIDTH,CV_8UC3);

			draw2.copyTo(combine(cv::Range(0,draw2.rows),cv::Range(0,draw2.cols)));
			draw.copyTo(combine(cv::Range(draw2.rows,draw.rows+draw2.rows),cv::Range(0,draw.cols)));
			//cand_resize.copyTo(combine(cv::Range(draw.rows+draw2.rows,draw.rows+draw2.rows+cand_resize.rows),cv::Range(0,cand_resize.cols)));*/

		
			//hybrid
			//cv::Mat draw2 = im.clone();
			//
			//ghostdraw_parallel(frame, transform, vidRecord, wcSkeletonsEstim, cylinderBody, limbrary, draw2, zBuf, options);
			//
			//cv::Mat combine(HEIGHT*2,WIDTH,CV_8UC4);
			//
			//draw2.copyTo(combine(cv::Range(0,draw2.rows),cv::Range(0,draw2.cols)));
			//draw.copyTo(combine(cv::Range(draw2.rows,draw.rows+draw2.rows),cv::Range(0,draw.cols)));


			cv::imshow("pic", draw);

			cv::Mat zBufNorm;
			cv::normalize(zBuf, zBufNorm, 0, 255, cv::NORM_MINMAX);

			cv::Mat zBuf8(zBuf.rows, zBuf.cols, CV_8U);
			for(int i=0;i<zBuf.rows*zBuf.cols;++i){
				zBuf8.ptr<unsigned char>()[i] = 255-zBufNorm.ptr<unsigned short>()[i];
			}

			cv::imshow("depth", zBuf8);

			std::string dir = "out_ws_interpcmp/";
			CreateDirectoryA(dir.c_str(), NULL);

			std::stringstream ss;
			ss << dir << 
				"frame" << std::setfill('0') << std::setw(3) << frame << 
				"r" << std::setw(2) << r <<
				"p" << p << ".png";

			//cv::imwrite(ss.str(), draw);

			if(play)
			{
				if(++frame >= vidRecord.size()){
					frame = 100;
					++r;
					rotation(1) = CV_PI/2 - r * (CV_PI/16);

					if(r > maxr)
					{
						return 0;
					}
				}
			}
		}

		char q = cv::waitKey(10);

		if(q=='q') return 0;
		else if(q=='w'){
			translation(2) -= 1;
		}else if(q=='s'){
			translation(2) += 1;
		}else if(q=='a'){
			rotation(1) += CV_PI/16;
		}else if(q=='d'){
			rotation(1) -= CV_PI/16;
		}else if(q=='z'){
			rotation (2) += CV_PI/64;
		}else if(q=='x'){
			rotation (2) -= CV_PI/64;
		}else if(q=='p'){
			play = !play;
		}

		
	}
}