1.pcl::PointCloud<PointT>
和pcl::PointCloud<PointT>::Ptr
之间相互转换
pcl中点云常用的指针类型pcl::PointCloud<PointT>::Ptr
和非指针类型pcl::PointCloud<PointT>
之间相互转换
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_Ptr(new pcl::PointCloud<pcl::PointXYZ>);
pcl::PointCloud<pcl::PointXYZ> cloud;
//ptr->cloud
cloud=*cloud_Ptr;
//cloud->ptr
cloud_Ptr=cloud.makeShared;
2.PCL点云类型和ROS消息类型点云之间的转换
-
pcl点云数据格式:
pcl::PointCloud< PointT>
pcl::PCLPointCloud2 -
ros点云消息:
snesor_msgs::PointCloud2
参考资料:https://blog.csdn.net/m0_45388819/article/details/113794706
3.OpenCV图片 cv::Mat
和 ros图片消息
cv::Mat
转换成sensor_msgs::ImagePtr
cv::Mat img;
sensor_msgs::ImagePtr imgmsg = cv_bridge::CvImage(std_msgs::Header(), "bgr8",rgbimage).toImageMsg();
cv::Mat
转换成sensor_msgs::Image
cv::Mat img;
sensor_msgs::Image imgmsg = *cv_bridge::CvImage(std_msgs::Header(), "bgr8",rgbimage).toImageMsg();
sensor_msgs::Image
或者sensor_msgs::ImagePtr
转换成cv::Mat
cv_bridge::CvImagePtr cv_ptr;
try{
//cv_bridge::toCvCopy()函数有多个重载函数,msg_image可以是指针也可以是一般类型
cv_ptr = cv_bridge::toCvCopy(msg_image, sensor_msgs::image_encodings::BGR8);
}
catch(cv_bridge::Exception &e){
return;
}
cv::Mat rgbimg = cv_ptr->image;