def from_msg(cls, msg):
"""Serializes a ROS Image message into a compressed PNG image.
Args:
msg: ROS Image or CompressedImage message.
Returns:
Compressed PNG image.
Raises:
CvBridgeError: On image conversion error.
"""
if isinstance(msg, CompressedImage):
# Decompress message.
msg = cls.from_raw(msg.data)
# Convert ROS Image to OpenCV image.
bridge = CvBridge()
img = bridge.imgmsg_to_cv2(msg)
# Convert to PNG with highest level of compression to limit bandwidth
# usage. PNG is used since it is a lossless format, so this can later
# be retrieved as a ROS image without issue.
compression = [cv2.IMWRITE_PNG_COMPRESSION, 9]
png = cv2.imencode(".png", img, compression)[1].tostring()
return png
评论列表
文章目录