Detect max quality level dynamically.
Detect max quality level dynamically. This will select 2 for standard Pico 2's and 5 for standard Pico's.
This commit is contained in:
parent
f94718eb4d
commit
6a9407744a
1 changed files with 21 additions and 2 deletions
|
|
@ -76,8 +76,27 @@ def open_next_image():
|
|||
return open(filename, "wb")
|
||||
|
||||
cam.colorspace = adafruit_ov5640.OV5640_COLOR_JPEG
|
||||
cam.quality = 3
|
||||
b = bytearray(cam.capture_buffer_size)
|
||||
|
||||
# Different platforms have different amounts of memory available.
|
||||
# Typically a Pico 2 can handle quality = 2 and a Pico can handle quality = 5.
|
||||
# Rather than detect and select sizes, let's try to detect the best dynamically
|
||||
# for broader platform support.
|
||||
# Start with the highest quality setting and attempt to allocate a buffer
|
||||
# of the necessary size. If it fails, try the next lowest.
|
||||
b = None
|
||||
for quality in range(2,55): #valid range is 2 to 54 inclusive
|
||||
try:
|
||||
cam.quality = quality
|
||||
print(f"Attempting to use quality {quality}.")
|
||||
b = bytearray(cam.capture_buffer_size)
|
||||
print(f"Quality {quality} successfully selected.")
|
||||
break
|
||||
except Exception:
|
||||
print(f"Quality {quality} was too big. Trying next lowest.")
|
||||
|
||||
if b==None:
|
||||
print("There wasn't enough system memory to allocate the lowest quality buffer.")
|
||||
|
||||
jpeg = cam.capture(b)
|
||||
|
||||
while True:
|
||||
|
|
|
|||
Loading…
Reference in a new issue