void SharedImageSequence::GetSharedImageSequenceManually(libCameraSensors::AbstractRangeImagingSensor* RangeCam, libCameraSensors::AbstractColorCamera* ColorCam, const CvSize& SharedImageSize)
{

	cvNamedWindow(m_CoordWinName.c_str());
	cvNamedWindow(m_ColorWinName.c_str());

	char c=-1;
	SharedImage SImg;
	SImg.GetImagesFromSensors(RangeCam, ColorCam, SharedImageDefaultSize);

	SImg.DisplayCoord(m_CoordWinName);
	SImg.DisplayShared(m_ColorWinName);

	int cnt=0;
	while(cvGetWindowHandle(m_ColorWinName.c_str()) && cvGetWindowHandle(m_CoordWinName.c_str()))
	{

		std::cout << "SharedImageSequence::GetSharedImageSequence: Press 'n' to take a training image, 's' to save the image, or 'q' to quit.\n";

		c = cvWaitKey();

		std::cout << "SharedImageSequence::GetSharedImageSequence: " << c << ".\n";
		if(c=='q' || c=='Q')
		{
			break;
		}
		else if (c=='n' || c=='N')
		{
		#ifndef __USE_SHAREDIMAGE_JBK__
			SImg.GetImagesFromSensors(RangeCam, ColorCam, SharedImageDefaultSize);
		#endif
		#ifdef __USE_SHAREDIMAGE_JBK__
			SImg.GetImagesFromSensors(RangeCam, ColorCam);
		#endif
			SImg.DisplayCoord(m_CoordWinName);
			SImg.DisplayShared(m_ColorWinName);
                }
		else if (c=='s' || c=='S')
		{
			push_back(SImg);
			std::cout << "SharedImageSequence::GetSharedImageSequence: ... one image sucessfully acquired." << std::endl;
			cnt++;
		}
	}
	cvDestroyAllWindows();
}
void SharedImageSequence::GetRawImageSequence(libCameraSensors::AbstractRangeImagingSensor* RangeCam, libCameraSensors::AbstractColorCamera* ColorCam)
{
	cvNamedWindow(m_CoordWinName.c_str());
	cvNamedWindow(m_ColorWinName.c_str());

	char c=-1;
	SharedImage SImg;
	SImg.GetRawImagesFromSensors(RangeCam, ColorCam);
	SImg.DisplayInten(m_CoordWinName);
	SImg.DisplayShared(m_ColorWinName);

	int cnt=0;
	while(cvGetWindowHandle(m_ColorWinName.c_str()) && cvGetWindowHandle(m_CoordWinName.c_str()))
	{

		std::cout << "SharedImageSequence::GetSharedImageSequence: Press 'n' to take a training image, 's' to save the image, or 'q' to quit.\n";

		c = cvWaitKey();

		SImg.GetRawImagesFromSensors(RangeCam, ColorCam);

		SImg.DisplayInten(m_CoordWinName);
		SImg.DisplayShared(m_ColorWinName);

		std::cout << "SharedImageSequence::GetSharedImageSequence: " << c << ".\n";
		if(c=='q' || c=='Q')
		{
			break;
		}
		else if (c=='n' || c=='N')
		{
			SImg.GetRawImagesFromSensors(RangeCam, ColorCam);
			SImg.DisplayInten(m_CoordWinName);
			SImg.DisplayShared(m_ColorWinName);
		}
		else if (c=='s' || c=='S')
		{
			push_back(SImg);
			std::cout << "SharedImageSequence::GetSharedImageSequence: ... one image sucessfully acquired." << std::endl;
			cnt++;
		}
	}
	cvDestroyAllWindows();
}
void SharedImageSequence::GetSharedImageSequencePowerCube(libCameraSensors::AbstractRangeImagingSensor* RangeCam, libCameraSensors::AbstractColorCamera* ColorCam, const CvSize& SharedImageSize, int DegreeOffset)
{

#ifndef __USE_POWERCUBE__
	std::cout << "Error: you have to enable the preprocessor symbol __USE_POWERCUBE__" << std::endl;
#endif

#ifdef __USE_POWERCUBE__
	cvNamedWindow(m_CoordWinName.c_str());
	cvNamedWindow(m_ColorWinName.c_str());
	char c=-1;
	ipa_utils::PowerCube powercube;
	powercube.Init();
	powercube.Open();
	powercube.DoHoming();
			
	// Rotate and capture

	unsigned int rotationIncrement = DegreeOffset;
	for(unsigned int degree = 0; degree < 360; degree += rotationIncrement)
	{
		
		if(!cvGetWindowHandle(m_CoordWinName.c_str()) || !cvGetWindowHandle(m_ColorWinName.c_str()))
		{
			break;
		}
		
		powercube.Rotate(rotationIncrement);
		
		SharedImage SImg;//(m_SharedImageSize);//, m_CameraSensorsIniDirectory);
		//SImg.Init(SharedImageSize);
	#ifndef __USE_SHAREDIMAGE_JBK__
		SImg.GetImagesFromSensors(RangeCam, ColorCam, SharedImageDefaultSize);
	#endif
	#ifdef __USE_SHAREDIMAGE_JBK__
		SImg.GetImagesFromSensors(RangeCam, ColorCam);
	#endif
		SImg.DisplayCoord(m_CoordWinName);
		SImg.DisplayShared(m_ColorWinName);
		push_back(SImg);

		c = cvWaitKey(100);
		if(c=='q' || c=='Q')
		{
			break;
		}

		std::cout << "SharedImageSequence::GetSharedImageSequence: ... one image sucessfully acquired." << std::endl;
	}
	cvDestroyAllWindows();
	powercube.Close();
#endif // __USE_POWERCUBE__
}