Skip to content

Instantly share code, notes, and snippets.

@ysuito
Last active March 20, 2024 02:47
Show Gist options
  • Save ysuito/f4e74b54e1c57f296aed20550ac9d819 to your computer and use it in GitHub Desktop.
Save ysuito/f4e74b54e1c57f296aed20550ac9d819 to your computer and use it in GitHub Desktop.
RPi Cam V3 Low Latency Test
from picamera2 import Picamera2, Metadata
from gpiozero import LED
import time
led = LED(21)
picam2 = Picamera2()
config = picam2.create_still_configuration(main={"size": (320, 240)}, buffer_count=1,queue=False)
picam2.configure(config)
picam2.set_controls({"ExposureTime": 1000})
picam2.set_controls({"FrameDurationLimits": (10000,10000)}) # MAX 100FPS -> 10ms
picam2.start()
while True:
# カメラモジュールにリクエストを出している時間だけ、LEDを点灯させる。
# トリガーに対して遅延なく反応すれば、撮影された画像は赤いもののみになるはずである。
# このon/offを入れ替えて実行すれば、撮影画像はすべて黒くなる。
led.on()
print(f"---Start---: {time.time()}")
request = picam2.capture_request()
led.off()
# LEDを消す。
print(f"Requested: {time.time()}")
request.save("main", "/tmp/image.jpg")
print(f"Saved: {time.time()}")
metadata = Metadata(request.get_metadata())
print(f"SensorTimestamp: {metadata.SensorTimestamp}, ExposureTime: {metadata.ExposureTime}, FrameDuration: {metadata.FrameDuration}") # Linux\u5074\u306etimestamp\u3068\u6bd4\u8f03\u3059\u308b\u306b\u306f\u3069\u3046\u3059\u308c\u3070\u3044\u3044\u306e\u304b\uff1fGPIO\u3067LED\u5149\u3089\u305b\u308b\uff1f
print(f"GotMetaData: {time.time()}")
request.release()
print(f"Released: {time.time()}")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment