How to capture RaspberryPi camera 10-bit raw image in Python
You can use the picamera
Python library to capture a raw sensor image of a camera attached to the Raspberry Pi via CSI:
#!/usr/bin/env python3
import picamera
import picamera.array
import numpy as np
# Capture image
print("Capturing image...")
with picamera.PiCamera() as camera:
with picamera.array.PiBayerArray(camera) as stream:
camera.capture(stream, 'jpeg', bayer=True)
# Demosaic data and write to rawimg
# (stream.array contains the non-demosaiced data)
rawimg = stream.demosaic()
rawimg is a numpy uint16 array of dimensions (w, h, 3)
, e.g. (1944, 2592, 3)
and contains integer values from 0
to 1023
.
You can, for example, save it in a NumPy file using
np.save("rawimg.npy", rawimg) # Reload with np.load("rawimg.npy")
or save it in a compressed format using
np.savez_compressed("rawimg.npz", rawimg) # Reload with np.load("rawimg.npz")