Convert cudaImage to base64

Hi at all, I need to convert cudaImage object to base64 to stream it by websocket, is there a way to do that?

Hi,

We don’t have a CUDA API for base64 encoding.
But you should be able to find some third party library to convert it into base64.

For example:
https://docs.python.org/3/library/base64.html

Please noted that if the encoding is implemented in CPU, you will need to copy the buffer back to CPU first.

Thanks.

1 Like

First, convert the cudaImage object to numpy array using cudaToNumpy() function as shown here:

https://github.com/dusty-nv/jetson-inference/blob/master/docs/aux-image.md#converting-to-numpy-arrays

Then, as Aasta mentioned you can use the base64 module to encode the Numpy array:

1 Like

Hi I solved with this code:

from PIL import Image
import base64
from io import BytesIO

## other code

img = self.input.Capture()

# detect objects in the image (with overlay)
detections = self.net.Detect(img, overlay=parameters.model_overlay)

# render the image
self.output.Render(img)

image_array = jetson.utils.cudaToNumpy(img)

pil_image = Image.fromarray(image_array, 'RGB')

buffered = BytesIO()

pil_image.save(buffered, format="JPEG")

base64_image = base64.b64encode(buffered.getvalue())

better solutions are welcome!

Hi,

Thanks for updating your solution with us.
It’s good to know it works.