void SettingsGuidingCalibrateDlg::OnPickStarButtonClick(wxCommandEvent& WXUNUSED(event))
{
   m_guide_timer.Stop();
   m_elapsed_time->SetValue(wxT("0"));
   m_camera_angle->SetValue(wxT("0.0"));
   m_imageScale->SetValue(wxT("1.0"));

   if(wxCamera* camera = wxF()->cam()) {
      camera->Connect(camera->GetId(),wxEVT_LEFT_DOWN,wxMouseEventHandler(SettingsGuidingCalibrateDlg::OnvideoPanelLeftDown),0,this);

#ifdef _WXMSW_
      // make a 32x32 cross hair cursor with centereed hot spot
      wxImage cimage(cross_hair_32x32_xpm);
      cimage.SetOption(wxIMAGE_OPTION_CUR_HOTSPOT_X,cimage.GetWidth()/2);
      cimage.SetOption(wxIMAGE_OPTION_CUR_HOTSPOT_Y,cimage.GetHeight()/2);
      camera->wxWindow::SetCursor(wxCursor(cimage));
#else
      // using stock cursor on Linux, as the MSW code makes a black crosshair and vice versa!!
      camera->wxWindow::SetCursor(wxCursor(wxCURSOR_BULLSEYE));
#endif
   }
}
Example #2
0
int main(int argc, char * argv[])
{
	std::cout << "press q to exit" << std::endl;
	R200Grabber grabber;
	const uint8_t nearColor[] = {255, 0, 0};
	const uint8_t farColor[] = {20, 40, 255};
	uint8_t cdepth[628 * 468 * 3];
	std::cout << "start" << std::endl;

	pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud = grabber.allocCloud();
	grabber.getCloudT(cloud);

	cloud->sensor_orientation_.w() = 0.0;
	cloud->sensor_orientation_.x() = 1.0;
	cloud->sensor_orientation_.y() = 0.0;
	cloud->sensor_orientation_.z() = 0.0;

	boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer(new pcl::visualization::PCLVisualizer ("3D Viewer"));
	viewer->setBackgroundColor(0, 0, 0);
	viewer->registerKeyboardCallback(KeyboardEventOccurred, (void*)&grabber);

	pcl::visualization::PointCloudColorHandlerRGBField<pcl::PointXYZRGB> rgb(cloud);
	viewer->addPointCloud<pcl::PointXYZRGB>(cloud, rgb, "sample cloud");
	viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, "sample cloud");

	cv::Mat limage(grabber.getLRSize(), CV_8UC1);
    cv::Mat rimage(grabber.getLRSize(), CV_8UC1);
    cv::Mat dimage(grabber.getDepthSize(), CV_8UC3);
    cv::Mat cimage(grabber.getColorSize(), CV_8UC3);

	double ftime;
	int frame;
	int dwidth = grabber.getDepthSize().width;
	int dheight = grabber.getDepthSize().height;
	bool first = true;	
	while(!viewer->wasStopped())
	{
		if(grabber.hasData() ){

		    ftime = grabber.getFrameTime();
		    frame = grabber.getFrameNumber();
		    
		    //std::cout << "Frame " << frame << " @ " << std::fixed << ftime << std::endl;
		    
		    const uint16_t * pd = grabber.getDepthImage();
		    const void * pl = grabber.getLImage();
		    const void * pr = grabber.getRImage();
		    const void * pc = grabber.getColorImageRGB();
		    /*
		    ConvertDepthToRGBUsingHistogram(pd, dwidth, dheight, nearColor, farColor, cdepth);

		    limage.data = (uint8_t *)pl;
		    rimage.data = (uint8_t *)pr;
		    dimage.data = (uint8_t *)cdepth;
		    cimage.data = (uint8_t *)pc;

    		cv::imshow("limage", limage);
    		cv::imshow("rimage", rimage);
    		cv::imshow("cimage", cimage);
    		cv::imshow("dimage", dimage);
			cv::waitKey(1);
			*/

    		std::chrono::high_resolution_clock::time_point tnow = std::chrono::high_resolution_clock::now();
    		grabber.getCloudT(cloud);
    		std::chrono::high_resolution_clock::time_point tpost = std::chrono::high_resolution_clock::now();
    		std::cout << "delta " << std::chrono::duration_cast<std::chrono::duration<double>>(tpost-tnow).count() * 1000 << std::endl;

    		//pcl::visualization::PointCloudColorHandlerRGBField<pcl::PointXYZRGB> rgb(cloud);
    		viewer->updatePointCloud<pcl::PointXYZRGB>(cloud, rgb, "sample cloud");
    		viewer->spinOnce();
		}
	}

	return 0;
}