mp.packet_creator.create_image_frame

Create a MediaPipe ImageFrame packet.

A MediaPipe ImageFrame packet can be created from an existing MediaPipe ImageFrame object and the data will be realigned and copied into a new ImageFrame object inside of the packet.

A MediaPipe ImageFrame packet can also be created from the raw pixel data represented as a numpy array with one of the uint8, uint16, and float data types. There are three data ownership modes depending on how the 'copy' arg is set.

i) Default mode If copy is not set, mutable data is always copied while the immutable data is by reference.

ii) Copy mode (safe) If copy is set to True, the data will be realigned and copied into an ImageFrame object inside of the packet regardless the immutablity of the original data.

iii) Reference mode (dangerous) If copy is set to False, the data will be forced to be shared. If the data is mutable (data.flags.writeable is True), a warning will be raised.

data A MediaPipe ImageFrame object or the raw pixel data that is represnted as a numpy ndarray.
image_format One of the image_frame.ImageFormat enum types.
copy Indicate if the packet should copy the data from the numpy nparray.

A MediaPipe ImageFrame Packet.

ValueError i) When "data" is a numpy ndarray, "image_format" is not provided or the "data" array is not c_contiguous in the reference mode. ii) When "data" is an ImageFrame object, the "image_format" arg doesn't match the image format of the "data" ImageFrame object or "copy" is explicitly set to False.
TypeError If "image format" doesn't match "data" array's data type.

np_array = np.random.randint(255, size=(321, 123, 3), dtype=np.uint8)

Copy mode by default if the data array is writable.

image_frame_packet = mp.packet_creator.create_image_frame( image_format=mp.ImageFormat.SRGB, data=np_array)

Make the array unwriteable to trigger the reference mode.

np_array.flags.writeable = False image_frame_packet = mp.packet_creator.create_image_frame( image_format=mp.ImageFormat.SRGB, data=np_array)

image_frame = mp.ImageFrame(image_format=mp.ImageFormat.SRGB, data=np_array) image_frame_packet = mp.packet_creator.create_image_frame(image_frame)