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 } }
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; }