Wie man picamera2 verwendet, um ein hochauflösendes Bild der Raspberry Pi HQ-Kamera (IMX477) aufzunehmen

Der folgende Code erfasst ein einzelnes 4056x3056px-Bild von einer Raspberry Pi HQ-Kamera mit dem IMX477-Sensor entweder in eine Datei oder ein NumPy-Array. Dies ist die maximal unterstützte Auflösung dieser Kamera.

Erfassen in eine Datei

Dies erfasst einen einzelnen Rahmen in CameraTest.png. Die PNG-Datei wird ziemlich groß sein, etwa 15-25 Megabyte.

capture_camera_test.py
#!/usr/bin/env python3
import time
import picamera2
import numpy as np

with picamera2.Picamera2() as camera:
    # Create high resolution still capture config
    camera_config = camera.create_still_configuration({"size":(4056, 3040)})
    camera.configure(camera_config)
    # Start camera with config
    camera.start()
    # Capture a single frame to CameraTest.png
    camera.capture_file("CameraTest.png")

Erfassen in ein numpy-Array

capture_to_numpy_array.py
#!/usr/bin/env python3
import time
import picamera2
import numpy as np

with picamera2.Picamera2() as camera:
    # Create high resolution still capture config
    camera_config = camera.create_still_configuration({"size":(4056, 3040)})
    camera.configure(camera_config)
    # Start capture
    camera.start()
    array = camera.capture_array("main")
    # TODO Do something with [array]
    print(array.shape)

Beispielausgabe:

picamera2_capture_example_output.txt
[0:55:52.878964095] [5768]  INFO Camera camera_manager.cpp:297 libcamera v0.0.5+83-bde9b04f
[0:55:52.913906171] [5769]  INFO RPI vc4.cpp:437 Registered camera /base/soc/i2c0mux/i2c@1/imx477@1a to Unicam device /dev/media3 and ISP device /dev/media0
[0:55:52.913998855] [5769]  INFO RPI pipeline_base.cpp:1101 Using configuration file '/usr/share/libcamera/pipeline/rpi/vc4/rpi_apps.yaml'
[0:55:52.921056014] [5768]  INFO Camera camera.cpp:1033 configuring streams: (0) 4056x3040-BGR888 (1) 4056x3040-SBGGR12_CSI2P
[0:55:52.922090144] [5769]  INFO RPI vc4.cpp:565 Sensor: /base/soc/i2c0mux/i2c@1/imx477@1a - Selected sensor format: 4056x3040-SBGGR12_1X12 - Selected unicam format: 4056x3040-pBCC
(3040, 4056, 3)

Beachten Sie, dass das NumPy-Array mit Python-OpenCV-Funktionen kompatibel ist.


Check out similar posts by category: Python, Raspberry Pi