ROS直接pub compressed image.

如果用ros的 image_transport::Publisher 发布图片的话则,ros会自动添加一个 image/compressed的topic,将原始图像编码,编码方式可以设置为png\jpeg.
有时候我们获取到的图片就是编码之后的数据,这个时候如果将解码转成 cv::Mat 再pub的话 性能开销比较大,并且数据损失更大. 所以我们可以直接pub compressed.
注意 我们使用的并不是 compressed_publisher

	#include <>
	ros::init(argc, argv, "nodename");
	ros::NodeHandle nh;
	
	ros::Publisher pub = nh.advertise("node/image/compressed", 100);
	sensor_msgs::CompressedImage jpeg_img;
	jpeg_img.format = "jpeg";
	jpeg_img.header.stamp.sec = times;
	jpeg_img.header.stamp.nsec = timeu*1000;
	jpeg_img.header.seq = kSeq++;
	// pimage :pointer to jpeg image buffer
	// image_pos : buffer size
	std::vector jpeg_buffer(pimage, pimage+image_pos);
	jpeg_img.data.swap(jpeg_buffer);
	pub.publish(jpeg_img);
	

你可能感兴趣的:(ROS)