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.
Als Beispiel für das Lesen der Tabelle wird hier die Tabelle des v2-Moduls angegeben.
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.
Resolution Die Auflösung des zu erfassenden Bildes. Wenn Sie einen anderen Wert als den hier beschriebenen angeben, wird die Größe geändert.
Aspect Ratio Das Seitenverhältnis des Bildes.
Framerates Dies ist die Bildrate, die eingestellt werden kann.
Video[1] Zeigt den Sensormodus an, der bei Verwendung des Videoanschlusses eingestellt werden kann (die x-Markierung in der Tabelle bedeutet ✓ [^ check]). Es unterstützt von 1 bis 7. Der Videoanschluss kann verwendet werden, indem beim Aufnehmen eines Films oder eines Standbilds "use_video_port = True" festgelegt wird. Es ist schneller als der Standbildport, liefert jedoch tendenziell ein körniges Bild.
Image[2] Dies ist ein Sensormodus, der eingestellt werden kann, wenn der Standbildanschluss (Standbildanschluss) verwendet wird. Der Standbild-Port wird mit der maximalen Auflösung aufgenommen. Wenn die Auflösung angegeben ist, wird die Größe auf diese Größe geändert. Leistungsstarke Geräuschentfernung kann verwendet werden, ist jedoch langsamer.
FoV (Field of View) Welcher Bereich des Sensors verwendet werden soll. Wenn Voll, wird der gesamte Bereich des Sensors verwendet, und wenn Teilweise, wird ein Teil verwendet. Daher ist der Blickwinkel (FoV) für diejenigen, die partiell sind, enger.
Binning Gibt an, ob Pixel-Binning durchgeführt werden soll. Keiner behandelt die gleiche Pixelgröße (Punkt für Punkt) und 2x2 behandelt 4 Pixel als 1 Pixel. Pixel-Binning verringert nicht nur die Auflösung, sondern reduziert auch das Rauschen.
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.
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
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
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) picamera document
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)
picamera document
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)
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.
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).
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.
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)
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 (sensor_mode=1)
(3280, 2464)_False_2.jpg (sensor_mode=2)
(3280, 2464)_False_3.jpg (sensor_mode=3)
(1640, 1232)_False_4.jpg (sensor_mode=4)
(1640, 922)_False_5.jpg (sensor_mode=5)
(1280, 720)_False_6.jpg (sensor_mode=6)
(640, 480)_False_7.jpg (sensor_mode=7)
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.
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.
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.
Schließlich ist es das Ergebnis der Änderung von Resolution und sensor_mode ohne Angabe von use_video_port.
Bei Framerate = 30
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.
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.
Links: sensor_mode = 4 (Binning), rechts: sensor_mode = 2
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)) |
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.)
Tabelle: Entsprechungstabelle sensor_mode des v2-Moduls (Teil)
sensor_mode | Resolution | FoV | Binning |
---|---|---|---|
1 | 1920x1080 | Partial | None |
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.
Tabelle: Entsprechungstabelle sensor_mode des v2-Moduls (Teil)
sensor_mode | Resolution | FoV | Binning |
---|---|---|---|
2 | 3280x2464 | Full | None |
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.
Tabelle: Entsprechungstabelle sensor_mode des v2-Moduls (Teil)
sensor_mode | Resolution | FoV | Binning |
---|---|---|---|
7 | 640x480 | Partial | 2x2 |
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.
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.
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)
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.
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)
Recommended Posts