Image transport very slow when using png compression

asked 2021-08-26 08:04:26 -0500

Jep gravatar image

I'm developing a ROS driver for a camera which is using image transport for publishing the images.

When using png as the format for the compressed stream the frame rate decreases drastically. For jpeg I manage to publish 30 fps while for png I only manage to publish 4 fps when setting the png_level to 1 (which is the minimum).

I know this issue is due to the CPU intensive png encoding and is something not directly related to ROS. However, is there any other approach I could use to increase the frame rate while using png compression?

I thought about using a pool of workers with an image transport publisher each, but it didn't work as each image transport publisher must have a different topic name.

The "best" solution I can think of is to encode the image in multiple workers (using cv::imencode) and later or publish them using normal publishers instead of image transport.

edit retag flag offensive close merge delete