Read and save RGB Lossless Images from a OpenMV cam M7 .bin file

I have a raw_images.bin recorded using OpenMV cam M7 in a 8bit Bayer format. How can i read the raw images, convert to RGB and save them with lossless compression into my disk

Hi, see the IO reader example.

Then when you read a frame use the to_rgb565() method. Then, save the images as a BMP file.

You don’t want to try to save as PNG. That’s for graphics. JPEG is preferred but you said losses compression.

Hi Kwagyeman,

Thanks for the quick reply. I am sorry as I am very new to OpenMV I would need your help further.
So, basically I was able to find out that the below code from imageio_read…py may work to read the images from .bin file.

However, when i run this i get module ‘image’ has no attribute ‘ImageIO’.
How do i install image library correctly? Am I doing it right?

# import sensor, image, time
import image, time
# snapshot_source = False # Set to true once finished to pull data from sensor.
#
# sensor.reset()
# sensor.set_pixformat(sensor.RGB565)
# sensor.set_framesize(sensor.QQVGA)
# sensor.skip_frames(time = 2000)
clock = time.process_time()

stream = None

stream = image.ImageIO("./raw_images.bin", "r")

while True:
    clock.tick()
    img = stream.read(copy_to_fb=True, loop=True, pause=True)

    # Do machine vision algorithms on the image here.
    print(clock.fps())

You need to update your firmware.

Hi. I build the firmware linux build and was able to generate all the build artifacts. However, I still get the ‘image’ has no attribute ‘ImageIO’ error. I am not sure what image library it is importing.

# Image Reader Example
#
# USE THIS EXAMPLE WITH A USD CARD!
#
# This example shows how to use the Image Reader object to replay snapshots of what your
# OpenMV Cam saw saved by the Image Writer object for testing machine vision algorithms.

# Altered to allow full speed reading from SD card for extraction of sequences to the network etc. 
# Set the new pause parameter to false

import sensor, image, time

snapshot_source = False # Set to true once finished to pull data from sensor.

sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QQVGA)
sensor.skip_frames(time = 2000)
clock = time.clock()

stream = None
if snapshot_source == False:
    stream = image.ImageIO("/stream.bin", "r")

while(True):
    clock.tick()
    if snapshot_source:
        img = sensor.snapshot() 
    else:
        img = stream.read(copy_to_fb=True, loop=True, pause=True)
    # Do machine vision algorithms on the image here.
    print(clock.fps())

This example works with the latest firmware. Not sure what issues you are having.