本文整理汇总了C++中pointcloud::Ptr::saveToSpcFile方法的典型用法代码示例。如果您正苦于以下问题:C++ Ptr::saveToSpcFile方法的具体用法?C++ Ptr::saveToSpcFile怎么用?C++ Ptr::saveToSpcFile使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pointcloud::Ptr
的用法示例。
在下文中一共展示了Ptr::saveToSpcFile方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
//.........这里部分代码省略.........
configFileStorage[ "kinectDepthImageHeight" ] >> kinectDepthImageHeight;
configFileStorage[ "kinectRGBCameraPos" ] >> kinectRGBCameraPos;
configFileStorage[ "kinectRGBCameraRotXYZDeg" ] >> kinectRGBCameraRotXYZDeg;
configFileStorage[ "kinectRGBFocalLengthPixel" ] >> kinectRGBFocalLengthPixel;
configFileStorage[ "kinectRGBImageWidth" ] >> kinectRGBImageWidth;
configFileStorage[ "kinectRGBImageHeight" ] >> kinectRGBImageHeight;
configFileStorage[ "highResCameraPos" ] >> highResCameraPos;
configFileStorage[ "highResCameraRotXYZDeg" ] >> highResCameraRotXYZDeg;
configFileStorage[ "highResFocalLengthPixel" ] >> highResFocalLengthPixel;
configFileStorage[ "highResImageWidth" ] >> highResImageWidth;
configFileStorage[ "highResImageHeight" ] >> highResImageHeight;
// Construct camera matrices
cv::Mat zeroVec = cv::Mat::zeros( 3, 1, CV_64FC1 );
cv::Mat kinectDepthCalibMtx = createCameraCalibrationMatrix(
kinectDepthFocalLengthPixel, kinectDepthImageWidth, kinectDepthImageHeight );
cv::Mat kinectDepthWorldMtx = createCameraWorldMatrix( zeroVec, zeroVec );
cv::Mat kinectRGBCalibMtx = createCameraCalibrationMatrix(
kinectRGBFocalLengthPixel, kinectRGBImageWidth, kinectRGBImageHeight );
cv::Mat kinectRGBWorldMtx = createCameraWorldMatrix(
kinectRGBCameraPos, kinectRGBCameraRotXYZDeg );
cv::Mat highResCalibMtx = createCameraCalibrationMatrix(
highResFocalLengthPixel, highResImageWidth, highResImageHeight );
cv::Mat highResWorldMtx = createCameraWorldMatrix(
highResCameraPos, highResCameraRotXYZDeg );
// First generate calibration images for the high resolution camera
for ( uint32_t testPosIdx = 0; testPosIdx < gHighResCalibrationPositions.size(); testPosIdx++ )
{
cv::Mat chessboardPoseMtx = createChessboardPoseMatrix( gHighResCalibrationPositions[ testPosIdx ] );
// Generate an image from the high resolution camera
cv::Mat highResRgbImage = generateRGBImageOfChessboard( highResWorldMtx, highResCalibMtx,
highResImageWidth, highResImageHeight, chessboardPoseMtx );
cv::imwrite( createOutputFilename( "chessboard_highres", testPosIdx + 1, ".png" ), highResRgbImage );
}
// Now generate images to identify the relative poses of the cameras
for ( uint32_t testPosIdx = 0; testPosIdx < gRelativeCalibrationPositions.size(); testPosIdx++ )
{
cv::Mat chessboardPoseMtx = createChessboardPoseMatrix( gRelativeCalibrationPositions[ testPosIdx ] );
// Generate a point cloud from the Kinect
PointCloud::Ptr pCloud = generatePointCloudOfChessboard( kinectDepthWorldMtx, kinectDepthCalibMtx,
kinectDepthImageWidth, kinectDepthImageHeight, chessboardPoseMtx );
pCloud->saveToSpcFile( createOutputFilename( "relative_chessboard", testPosIdx + 1, ".spc" ), true );
// Generate an image from the Kinect RGB camera
cv::Mat rgbImage = generateRGBImageOfChessboard( kinectRGBWorldMtx, kinectRGBCalibMtx,
kinectRGBImageWidth, kinectRGBImageHeight, chessboardPoseMtx );
cv::imwrite( createOutputFilename( "relative_chessboard", testPosIdx + 1, ".png" ), rgbImage );
// Generate an image from the high resolution camera
cv::Mat highResRgbImage = generateRGBImageOfChessboard( highResWorldMtx, highResCalibMtx,
highResImageWidth, highResImageHeight, chessboardPoseMtx );
cv::imwrite( createOutputFilename( "relative_chessboard_highres", testPosIdx + 1, ".png" ), highResRgbImage );
}
// Generate ideal calibration files
// First the kinect calibration
cv::FileStorage dataFile( "kinect_calib.yaml", cv::FileStorage::WRITE );
dataFile << "DepthCameraCalibrationMtx" << kinectDepthCalibMtx;
dataFile << "ColorCameraCalibrationMtx" << kinectRGBCalibMtx;
cv::Mat kinectRGBInKinectDepthSpace = (kinectDepthWorldMtx.inv())*kinectRGBWorldMtx;
dataFile << "DepthToColorCameraRotation" << cv::Mat( kinectRGBInKinectDepthSpace, cv::Rect( 0, 0, 3, 3 ) );
dataFile << "DepthToColorCameraTranslation" << cv::Mat( kinectRGBInKinectDepthSpace, cv::Rect( 3, 0, 1, 3 ) );
dataFile.release();
// Now the high resolution camera calibration
dataFile = cv::FileStorage( "high_res_calib.yaml", cv::FileStorage::WRITE );
dataFile << "cameraMatrix" << highResCalibMtx;
dataFile.release();
// Finally, the position of the high resolution colour camera in Kinect colour camera space
dataFile = cv::FileStorage( "colour_stereo_calib.yaml", cv::FileStorage::WRITE );
cv::Mat highResInKinectRGBSpace = (kinectRGBWorldMtx.inv())*highResWorldMtx;
dataFile << "R" << cv::Mat( highResInKinectRGBSpace, cv::Rect( 0, 0, 3, 3 ) );
dataFile << "T" << cv::Mat( highResInKinectRGBSpace, cv::Rect( 3, 0, 1, 3 ) );
dataFile.release();
//std::cout << kinectRGBWorldMtx << std::endl;
//std::cout << highResWorldMtx << std::endl;
//std::cout << highResInKinectRGBSpace << std::endl;
return 0;
}