[PYTHON] Über sensor_mode und Blickwinkel der Picamera

Über sensor_mode

Bei Verwendung des Raspeye-Kameramoduls können Phänomene wie die Verengung des Blickwinkels oder die Änderung der Bildqualität bei Aufnahmen mit einer bestimmten Auflösung auftreten. Dies ist ein Phänomen, das durch den Unterschied im sensor_mode verursacht wird.

sensor_mode ist ein Parameter, der angibt, wie der Bildsensor verwendet wird. Beispielsweise können Sie nur einige der Pixel des Sensors verwenden oder 4 Pixel als 1 Pixel behandeln. Der Betrieb jedes Modus wird als Korrespondenztabelle für jedes Kameramodul vorbereitet.

Korrespondenztabelle

Als Beispiel für das Lesen der Tabelle wird hier die Tabelle des v2-Moduls angegeben.

v2_table.png

Dies ist der Sensormodus. Das v2-Modul kann von 1 bis 7 angegeben werden. 2 und 3 sind genau gleich, aber dies scheint das Ergebnis der Berücksichtigung der Kompatibilität mit dem v1-Modul zu sein.

Unten sehen Sie ein Diagramm von sensor_mode und Schießstand. Aus der obigen Tabelle und der folgenden Abbildung können Sie ersehen, dass sensor_mode = 2 oder 3 oder 4 verwendet werden sollte, um mit dem gesamten Sensor im maximalen Winkel zu schießen. Sie können auch sehen, dass der Blickwinkel enger wird, wenn Sie ihn auf einen anderen sensor_mode oder eine andere Auflösung einstellen (z. B. 1920 x 1080).

Wie später beschrieben wird, wählen Auflösung und Bildrate automatisch sensor_mode aus, wenn sensor_mode nicht angegeben ist.

v2_fov.png

Die hier gezeigten Tabellen und Bilder stammen aus der folgenden Picamera-Dokumentation. https://picamera.readthedocs.io/en/release-1.13/fov.html

[^ check]: In Übersee bedeutet das x-Zeichen einen Check. https://www.sociomedia.co.jp/7304

Pixel Binning

binning.png

Es ist ein Fluss von 2x2 Binning. ①: Sensorfarbanordnung (Bayer-Anordnung) ②: Nehmen Sie den Durchschnitt von 4 Pixeln für jede Farbe (g1 und g2 werden unterschieden) ③: Nach dem Durchschnitt

Da der Pixelmittelwert auf diese Weise ermittelt wird, hat er einen Rauschreduzierungseffekt. Dies beschleunigt auch die Aufnahme, da die Anzahl der Pixel vor der Bildverarbeitung (Demosaik, Weißabgleich usw.) verringert werden kann.

Wenn Sie mehr über den Sensor erfahren möchten, lesen Sie bitte das Datenblatt. IMX219 (v2-Modul) hat eine Gruppierung auf S.53 des Datenblattes geschrieben. Datenblatt zum IMX219 (v2-Modul): https://www.raspberrypi.org/forums/viewtopic.php?t=177308

Tabelle jedes Moduls

picamera ist derzeit (2020/10) und wurde seit mehr als 2 Jahren nicht mehr aktualisiert. Aus diesem Grund gibt es einige Teile, die sich von der Raspberry Pi OS-Site (Raspbian) unterscheiden. Daher zitieren wir hier zwei Tabellen, die Picamera-Dokumentationstabelle und die Raspberry Pi OS-Tabelle.

Quelle zitieren: picamera document:https://picamera.readthedocs.io/en/release-1.13/fov.html Raspberry Pi OS document: https://www.raspberrypi.org/documentation/raspbian/applications/camera.md

v1 (OV5647) v1_table.png picamera document

v1_table(app).png Raspberry Pi OS document

Es ist fast das gleiche, bis auf den Binning-Teil. Ich denke, 4x4binning und 2x2 + überspringen haben unterschiedliche Bedeutungen, aber was ist damit?

v2 (IMX219)

v2_table.png picamera document

v2_table(app).png Raspberry Pi OS document

Zu beachten ist der Punkt sensor_mode = 7. Das Maximum beträgt 90 fps für Picamera, aber 200 fps für Pi OS-Dokumente. 200fps ist

1For frame rates over 120fps, it is necessary to turn off automatic exposure and gain control using -ex off. Doing so should achieve the higher frame rates, but exposure time and gains will need to be set to fixed values supplied by the user.

Es ist notwendig, die automatische Belichtungs- und Verstärkungsregelung wie beschrieben auszuschalten, aber es scheint, dass 120 fps unterstützt werden, auch wenn dies nicht der Fall ist.

Für Picamera-Dokumente

The maximum framerate of the camera depends on several factors. With overclocking, 120fps has been achieved on a V2 module but 90fps is the maximum supported framerate.

Es heißt, dass die maximal unterstützte Bildrate 90 fps beträgt, obwohl 120 fps aufgrund von Faktoren wie Übertakten ausgegeben werden können.

Als ich tatsächlich versuchte, sensor_mode = 7, Resolution = (320.240), Framerate = 120 mit Picamera einzustellen, konnte ich bestätigen, dass 120 fps ausgegeben wurden. Übrigens ist die Reduzierung der Auflösung auch im selben sensor_mode schneller, da die Größe der GPU geändert und die Übertragungsmenge reduziert wird.

HQ (IMX477)

hq_table(app).png Raspberry Pi OS document

HQ-Daten sind nicht in der Picamera-Dokumentation enthalten, daher müssen Sie sich auf die Raspberry Pi OS-Dokumentation beziehen.

Überprüfung

Ich habe tatsächlich ein Standbild aufgenommen, indem ich sensor_mode, Resolution und use_video_port geändert habe. Es ist etwas lang. Wenn Sie es überspringen möchten, klicken Sie auf [hier](# Fluss zur Bildaufnahme).

Umgebung

Die folgende Testkarte wurde auf A4-Papier gedruckt und zum Schießen verwendet. Die Hintergrundfarbe entspricht dem Aufnahmebereich jedes oben gezeigten sensor_mode. Darüber hinaus wird die Abbildung von Irasutoya verwendet, um das Verständnis der Änderung des Blickwinkels zu erleichtern.

chart.png

Schießen

Runden Sie sensor_mode, Resolution, use_video_port auf

Die Bilder, die durch Drücken von sensor_mode, Resolution und use_video_port aufgenommen wurden, werden unten angezeigt. Auflösung ist die Auflösung, die in der Tabelle sensor_mode angezeigt wird. Das gepostete Bild ist ein Screenshot der Miniaturansicht.

Die horizontale Richtung (→) ist der Unterschied zwischen sensor_mode (1 bis 7) und die vertikale Richtung (↓) ist das Vorhandensein oder Fehlen von Resolution und use_video_port. Der unter dem Bild angezeigte Dateiname lautet

{Resolution}_{use_video_port}_{sensor_mode}.jpg

Es ist.

→ sensor_mode (1~7) ↓ Auflösung, use_video_port (False, True Alternate) rsvすべて変化(連結).png

Es sieht aus wie das Ganze, und wenn der sensor_mode gleich ist, wird fast der gleiche Bereich angezeigt. Daraus ist ersichtlich, dass nach dem Aufnehmen mit dem angegebenen sensor_mode-Blickwinkel das Bild zugeschnitten und auf die Größe der Auflösung angepasst wird.

Der Unterschied in use_video_port ändert sich nicht. Wenn sensor_mode angegeben ist, wird der Wert von use_video_port ignoriert? In Bezug auf den Unterschied in der Menge des Rauschens aufgrund des Unterschieds in use_video_port denke ich, dass es nicht verglichen werden kann, da die Einstellung zum Zeitpunkt der Aufnahme angemessen ist, aber das Gefühl, das ich sah, war das gleiche.

Wenn Sie sich den Unterschied im sensor_mode ansehen, können Sie feststellen, dass es einen Unterschied im Schießstand gibt. Dies ist der Unterschied im Bildwinkel in Abhängigkeit vom sensor_mode. Unten sehen Sie das Bild, wenn Auflösung und sensor_mode übereinstimmen. Auf dem Bild können Sie sehen, dass die Hintergrundfarbe der Testkarte mit dem Schießstand übereinstimmt.

(1920, 1080)_False_1.jpg (1920,1080)_False_1.jpg (sensor_mode=1)

(3280, 2464)_False_2.jpg (3280, 2464)_False_2.jpg (sensor_mode=2)

(3280, 2464)_False_3.jpg (3280, 2464)_False_3.jpg (sensor_mode=3)

(1640, 1232)_False_4.jpg (1640, 1232)_False_4.jpg (sensor_mode=4)

(1640, 922)_False_5.jpg (1640, 922)_False_5.jpg (sensor_mode=5)

(1280, 720)_False_6.jpg (1280, 720)_False_6.jpg (sensor_mode=6)

(640, 480)_False_7.jpg (640, 480)_False_7.jpg (sensor_mode=7)

Wenn sensor_mode nicht angegeben ist

Als nächstes werden die Ergebnisse der Änderung von Auflösung und sensor_mode ohne Angabe von sensor_mode unten gezeigt. Der Dateiname ist der gleiche wie zuvor

{Resolution}_{use_video_port}_{sensor_mode}.jpg

(Da sensor_mode nicht angegeben ist, ist es 0). Die horizontale Richtung (→) ist das Vorhandensein oder Fehlen von use_video_port, und die vertikale Richtung (↓) ist der Unterschied in der Auflösung.

rvのみ変化.png

Wenn use_video_port = False (linke Spalte), zeigt das Bild die "AI-Buchillustration", die angibt, dass alle Bilder im maximalen Aufnahmebereich aufgenommen wurden.

Wenn Sie sich als nächstes ansehen, wann use_video_port = True (rechte Spalte) ist, ist das Bild bis auf (1920, 1080) dasselbe wie das linke. Es ist jedoch natürlicher, use_video_port = True auf sensor_mode zu setzen, was der Auflösung am nächsten kommt (z. B. (640, 480) verengt den Blickwinkel).

Dieses Verhalten ist auf die Methode zur Bestimmung des sensor_mode von picamera zurückzuführen, und es scheint, dass picamera über einen Mechanismus zur Bestimmung des sensor_mode unter Berücksichtigung der Auflösung und der Bildrate verfügt. (Referenz) https://picamera.readthedocs.io/en/release-1.13/fov.html#sensor-modes

Das obige Ergebnis war das Ergebnis von Framerate = 30 (Standard). Als nächstes werde ich das Ergebnis mit Framerate = 60 veröffentlichen.

rvのみ変化(60fps).png

Wie Sie am Ergebnis von Framerate = 60 sehen können, hat sich der Schießstand bei use_video_port = True geändert. Früher wurde nur der gelbe Bereich angezeigt (1920, 1080), jetzt wird er bis zum blauen Bereich angezeigt. Dies bedeutet, dass sensor_mode = 1 nicht mit 60 fps kompatibel ist und daher in sensor_mode = 6 geändert wurde.

Da die anderen Bilder ebenfalls im blauen Bereich angezeigt werden, ist zu erkennen, dass sie mit sensor_mode = 6 aufgenommen wurden. Es ist auch ersichtlich, dass (640, 480) unter Berücksichtigung der Auflösung sensor_mode = 7 hat.

Wenn use_video_port nicht angegeben ist

Schließlich ist es das Ergebnis der Änderung von Resolution und sensor_mode ohne Angabe von use_video_port.

rsのみ変化(30fps).png Bei Framerate = 30

rsのみ変化(60fps).png Bei Framerate = 60

Aus dem Ergebnis können wir ersehen, dass es dasselbe ist wie die erste Überprüfung. Da es sich auch bei Änderung der Framerate nicht ändert, scheint die hierarchische Beziehung der Einstellungen sensor_mode> Framerate zu sein.

Auswirkungen von Binning

Unter Verwendung des Bildes von 1640 x 922, use_video_port = False, haben wir sensor_mode = 4 (2x2 Binning) und sensor_mode = 2 (maximale Auflösung ohne Binning geändert) verglichen. Das linke ist sensor_mode = 4 und das rechte ist sensor_mode = 2. Das gepostete Bild ist ein Screenshot von zwei Bildern, die nebeneinander in der Viewer-Software angezeigt werden.

1640x922_False_(4vs2).png Links: sensor_mode = 4 (Binning), rechts: sensor_mode = 2

1640x922_False_(4vs2)-2.png Links: sensor_mode = 4 (Binning), rechts: sensor_mode = 2

Ich habe das Gefühl, dass die Auflösung mit Binning niedriger ist als die ohne Binning. Wahrscheinlich ist die Auflösung verringert, da die Demosaikverarbeitung nach dem Binning durchgeführt wird. Wenn Sie mit Priorität auf Auflösung aufnehmen, ist es besser, mit maximaler Auflösung ohne Binning zu fotografieren, auch wenn Sie die Größe später ändern.

Obwohl diesmal nicht überprüft, kann der Rauschunterdrückungseffekt des Binning auftreten, wenn in einer dunklen Umgebung aufgenommen wird. Da wir diesmal keine Parameter für Belichtung und Weißabgleich festgelegt haben, ist es möglicherweise besser, das Rauschgefühl im obigen Bild nicht zu vergleichen.

Vorerst werde ich die Einstellungen aufschreiben, die ich beim Aufnehmen dieser beiden Bilder geschrieben habe. Die Verschlusszeit ist leicht unterschiedlich und der Weißabgleich ist unterschiedlich, aber ich denke nicht, dass dies den Vergleich der Auflösung beeinflusst.

parameters sensor_mode=4 Bilder sensor_mode=2 Bilder
resolution 1640x922 1640x922
exposure_speed 25605 (us) 25832 (us)
sensor_mode 4 2
analog_gain 1 1
digital_gain 1 1
framerate 30 30
awb_gains (Fraction(205, 128), Fraction(235, 128)) (Fraction(205, 128), Fraction(471, 256))

Fluss bis zur Bildaufnahme

Aus den obigen Ergebnissen wird der Verarbeitungsfluss in Bezug auf die Bildgröße, der von der Aufnahme bis zum Erhalten eines Bildes durchgeführt wird, anhand von drei Arten von Beispielen gezeigt. (Die in diesem Abschnitt gezeigte Verarbeitung enthält meine Erwartungen, daher kann die Genauigkeit nicht garantiert werden.)

1 1. Wenn sensor_mode = 1 ist, ist die Auflösung = (3280, 2464)

Tabelle: Entsprechungstabelle sensor_mode des v2-Moduls (Teil)

sensor_mode Resolution FoV Binning
1 1920x1080 Partial None

img1.png

Die obige Tabelle ist Teil der zuvor veröffentlichten v2-Modultabelle. sensor_mode = 1 ist der Modus von 1920x1080. Da FoV teilweise ist, wird es bei der Aufnahme mit einem Teil des Sensors (orangefarbener Teil) aufgenommen.

Danach wird es auf das angegebene Seitenverhältnis der Auflösung (hier 3280 x 2464) (4: 3) zugeschnitten und in der Größe geändert.

2. Wenn sensor_mode = 2, Auflösung = (800, 600)

Tabelle: Entsprechungstabelle sensor_mode des v2-Moduls (Teil)

sensor_mode Resolution FoV Binning
2 3280x2464 Full None

img2.png

Dies ist der gleiche Vorgang wie bei Verwendung des Standbild-Ports ohne Angabe von sensor_mode. Da im Standbildport die höchste Bildqualität verwendet wird, ist sie langsam, da eine solche Verarbeitung bereits bei 800 x 600 erfolgt.

3. 3. Wenn sensor_mode = 7, Resolution = (800, 600)

Tabelle: Entsprechungstabelle sensor_mode des v2-Moduls (Teil)

sensor_mode Resolution FoV Binning
7 640x480 Partial 2x2

img3.png

Das Pixel-Binning wird bei sensor_mode = 7 durchgeführt. Daher wird der Bereich von 1280 x 960 des Sensors verwendet, und er wird durch Binning zu 640 x 480. Danach wird die Größe auf die angegebene Auflösung angepasst.

Wenn sensor_mode nicht angegeben ist

A resolution of 800x600 and a framerate of 60fps will select the 640x480 60fps mode, even though it requires upscaling because the algorithm considers the framerate to take precedence in this case.

Zitat: https://picamera.readthedocs.io/en/release-1.13/fov.html#sensor-modes

Gemäß der Picamera-Dokumentation wird die Größenänderung abhängig von der von Ihnen festgelegten Bildrate nicht immer verkleinert.

In dieser Überprüfung haben wir das Auftreten von Upscaling aufgrund der Begrenzung der Bildrate bestätigt. Wenn Sie ein Hochskalieren vermeiden und mit hoher Bildqualität aufnehmen möchten, sollten Sie sensor_mode manuell einstellen.

Quellcode

Dies ist der Quellcode, der für diese Überprüfung verwendet wird. Ich denke, dass es kein Problem gibt, da der Unterschied in sensor_mode in diesem Code gut erscheint. Als Grund zur Sorge

Es gibt so einen Ort, aber ich habe es nicht bestätigt. Auch der Schlaf vor dem Aufnehmen beträgt 1 Sekunde, aber wenn Sie tatsächlich etwas aufnehmen, ist es besser, etwa 2 Sekunden zu dauern, da Belichtung und Weißabgleich ebenfalls zusammenhängen. Dieses Mal ist die Überprüfung des Blickwinkels das wichtigste, daher ist es angemessen.

write_config () ist eine Funktion, die Kameraeinstellungen (Verschlusszeit usw.) aufschreibt. Es steht nicht in direktem Zusammenhang mit der Überprüfung von sensor_mode.

import picamera
import numpy as np
import cv2
from PIL import Image

import io
import os, sys
import datetime
import time

def write_config(f, camera):
    """
Eine Funktion, die alle Einstellungen exportiert, die von der Kamera exportiert werden können
    """
    f.writelines(f"timestamp*={camera.timestamp}\n")
    f.writelines(f"revision={camera.revision}\n")
    f.writelines(f"resolution={camera.resolution}\n")
    f.writelines(f"-"*30)
    f.writelines("\n")
    shutter_speed = camera.shutter_speed
    exposure_speed = camera.exposure_speed
    if(shutter_speed!=0):
        f.writelines("shutter_speed={0} (1/{1:.2f}s)\n".format(shutter_speed, 1/(shutter_speed/1000000)))
    else:
        f.writelines("shutter_speed={0}\n".format(shutter_speed))
    f.writelines("exposure_speed*={0} (1/{1:.2f}s)\n".format(exposure_speed, 1/(exposure_speed/1000000)))
    f.writelines(f"exposure_mode={camera.exposure_mode}\n")
    f.writelines(f"exposure_compensation={camera.exposure_compensation}\n")
    f.writelines(f"iso={camera.iso}\n")
    f.writelines(f"sensor_mode={camera.sensor_mode}\n")
    f.writelines(f"analog_gain*={camera.analog_gain}\n")
    f.writelines(f"digital_gain*={camera.digital_gain}\n")
    f.writelines(f"framerate={camera.framerate}\n")
    f.writelines(f"framerate_delta={camera.framerate_delta}\n")
    f.writelines(f"framerate_range={camera.framerate_range}\n")
    f.writelines(f"meter_mode={camera.meter_mode}\n")
    f.writelines(f"drc_strength={camera.drc_strength}\n")
    f.writelines(f"raw_format={camera.raw_format}\n")
    f.writelines("-"*30)
    f.writelines("\n")

    f.writelines(f"image_denoise={camera.image_denoise}\n")
    f.writelines(f"video_denoise={camera.video_denoise}\n")
    f.writelines(f"video_stabilization={camera.video_stabilization}\n")
    f.writelines("-"*30)
    f.writelines("\n")

    f.writelines(f"awb_gains=    {camera.awb_gains}\n")
    f.writelines(f"awb_mode=     {camera.awb_mode}\n")
    f.writelines(f"brightness=   {camera.brightness}\n")
    f.writelines(f"saturation=   {camera.saturation}\n")
    f.writelines(f"contrast=     {camera.contrast}\n")
    f.writelines(f"sharpness=    {camera.sharpness}\n")
    f.writelines(f"flash_mode=   {camera.flash_mode}\n")
    f.writelines(f"rotation=     {camera.rotation}\n")
    f.writelines(f"hflip=        {camera.hflip}\n")
    f.writelines(f"vflip=        {camera.vflip}\n")
    f.writelines(f"zoom=         {camera.zoom}\n")
    f.writelines("-"*30)
    f.writelines("\n")

    f.writelines(f"color_effects={camera.color_effects}\n")
    f.writelines(f"image_effect={camera.image_effect}\n")
    f.writelines(f"image_effect_params={camera.image_effect_params}\n")
    f.writelines(f"still_stats={camera.still_stats}\n")

# -----------Parametereinstellung zur Überprüfung--------------
RESOLUTION_LIST = ((3280, 2464),   # full sensor area #2, #3
                    (1640, 1232),  # full sensor area(binned) #4
                    (1640, 922),   # #5
                    (1280,720),    # #6
                    (1920, 1080),  # #1
                    (640, 480))    # #7
FRAMERATE = (30, 60)
USE_VIDEO_PORT = (True, False)                    
SENSOR_MODES = (1,2,3,4,5,6,7)

nowtime = datetime.datetime.now()
outputdir = nowtime.strftime("%Y%m%d-%H%M%S")
os.mkdir(outputdir)

TEST1 = True
TEST2 = True
TEST3 = True
# -----------------------------------------------------

"""
test1
Resolution, use_video_port, sensor_Testen Sie, um alle Modi-Kombinationen zu treffen
"""
if(TEST1):
    foldername = os.path.join(outputdir, "test1")
    os.mkdir(foldername)

    for resolution in RESOLUTION_LIST:
        for use_vp in USE_VIDEO_PORT:
            for sensor_mode in SENSOR_MODES:
                with picamera.PiCamera() as camera:
                    camera.resolution = resolution
                    camera.sensor_mode = sensor_mode
                    camera.start_preview()
                    time.sleep(1)

                    stream = io.BytesIO()
                    camera.capture(stream, format="jpeg", use_video_port=use_vp, quality=95)
                    camera.stop_preview()
                    stream.seek(0)
                    img = Image.open(stream)
                    img = np.array(img, dtype=np.uint8)
                    img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)

                    filename = "{0}_{1}_{2}.jpg ".format(str(resolution), str(use_vp), str(sensor_mode))
                    cv2.imwrite(os.path.join(foldername, filename), img)
                    #cv2.imshow("capture", img)
                    print(filename)
                    print(img.shape)
                    print("")
                    with open(os.path.join(foldername, filename[:-4]+".txt"), "w") as f:
                        write_config(f, camera)

"""
test2 
sensor_Testen Sie, wenn der Modus nicht angegeben ist
"""
if(TEST2):
    for framerate in FRAMERATE:
        foldername = os.path.join(outputdir, "test2_{0}fps".format(framerate))
        os.mkdir(foldername)

        for resolution in RESOLUTION_LIST:
            for use_vp in USE_VIDEO_PORT:
                with picamera.PiCamera() as camera:
                    camera.resolution = resolution
                    camera.framerate = framerate
                    # camera.sensor_mode = sensor_mode  # sensor_Geben Sie keinen Modus an
                    camera.start_preview()
                    time.sleep(1)

                    stream = io.BytesIO()
                    camera.capture(stream, format="jpeg", use_video_port=use_vp, quality=95)
                    camera.stop_preview()
                    stream.seek(0)
                    img = Image.open(stream)
                    img = np.array(img, dtype=np.uint8)
                    img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)

                    filename = "{0}_{1}_{2}.jpg ".format(str(resolution), str(use_vp), str(camera.sensor_mode))
                    cv2.imwrite(os.path.join(foldername, filename), img)
                    #cv2.imshow("capture", img)
                    print(filename)
                    print(img.shape)
                    print("")
                    with open(os.path.join(foldername, filename[:-4]+".txt"), "w") as f:
                        write_config(f, camera)   

"""
test3
use_video_Test, wenn kein Port angegeben ist
"""
if(TEST3):
    for framerate in FRAMERATE:
        foldername = os.path.join(outputdir, "test3_{0}fps".format(framerate))
        os.mkdir(foldername)

        for resolution in RESOLUTION_LIST:
            for sensor_mode in SENSOR_MODES:
                with picamera.PiCamera() as camera:
                    camera.resolution = resolution
                    camera.sensor_mode = sensor_mode
                    camera.framerate = framerate
                    camera.start_preview()
                    time.sleep(1)

                    stream = io.BytesIO()
                    camera.capture(stream, format="jpeg", quality=95)  # use_video_Geben Sie keinen Port an
                    camera.stop_preview()
                    stream.seek(0)
                    img = Image.open(stream)
                    img = np.array(img, dtype=np.uint8)
                    img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)

                    filename = "{0}_{1}_{2}.jpg ".format(str(resolution), "None", str(sensor_mode))
                    cv2.imwrite(os.path.join(foldername, filename), img)
                    #cv2.imshow("capture", img)
                    print(filename)
                    print(img.shape)
                    print("")
                    with open(os.path.join(foldername, filename[:-4]+".txt"), "w") as f:
                        write_config(f, camera)

abschließend

Es ist möglich, ohne Kenntnis von sensor_mode zu fotografieren, aber ich habe festgestellt, dass ich überlegen sollte, welche Art von Leistung (hohe Bildqualität, Blickwinkel, Geschwindigkeit) ich benötige. Persönlich war ich überrascht, dass die Abnahme der Auflösung aufgrund von Pixel-Binning größer war als ich erwartet hatte.

Der größte Teil dieses Artikels stammt aus der Picamera-Dokumentation. Das Picamera-Dokument beschreibt nicht nur die Verwendung der Bibliothek, sondern auch den Mechanismus des Kameramoduls und den Aufnahmefluss. Daher ist es sehr hilfreich und empfehlenswert, es zu lesen.

Referenz

https://picamera.readthedocs.io/en/release-1.13/index.html (Picaemra-Dokument) https://www.raspberrypi.org/documentation/raspbian/applications/camera.md (Dokumentation für die Raspberry Pi-Kameraanwendung)


  1. https://picamera.readthedocs.io/en/release-1.13/fov.html#the-video-port ↩︎

  2. https://picamera.readthedocs.io/en/release-1.13/fov.html#the-still-port ↩︎

Recommended Posts

Über sensor_mode und Blickwinkel der Picamera
Über _ und __
Über die linke und rechte Rechtfertigung von Kivy Label
Über das Verhalten von copy, deepcopy und numpy.copy
Informationen zur kumulativen Zuordnung von Liste und Numpy-Array
Über flache und tiefe Kopien von Python / Ruby
Über Probleme und Lösungen von OpenPyXL (Version 3.0)
Über Importfehler von numpy und scipy in anaconda
Denken Sie an das Rack und WSGI der nächsten Generation
Persönliche Hinweise zur Integration von vscode und anaconda
[Python] Kapitel 01-02 Über Python (Ausführung und Installation der Entwicklungsumgebung)
Über Klasse und Instanz
Über alles von numpy
Über die Zuweisung von numpy.ndarray
Über Cumprod und Cummax
Über Variable von Chainer
Über Kreuzvalidierung und F-Wert
[Golang] Grundlagen der Go-Sprache Über Wertempfänger und Zeigerempfänger