Что такое недопустимый кортеж разрешения? - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть камера Raspberry Pi с «лучшим разрешением» 1080p в соответствии с характеристиками

У меня есть небольшой скрипт, который ничего не дает, кроме изменения некоторых настроек,

import picamera
import picamera.array
import numpy
from fractions import Fraction

camera = icamera.PiCamera()
camera.resolution = 1920*1080
camera.iso = 0
camera.exposure_mode = 'off'
camera.shutter_speed = '10000'

camera.start_preview()

При выполнении кода мне выдается следующее сообщение об ошибке, за которым следует код, заканчивающийся Я включил только две последние строки сообщения об ошибке

    raise PiCameraValueError("Invalid resolution tuple: %r" % value)
picamera.exc.PiCameraValueError: Invalid resolution tuple: 2073600

Я пытался изменить разрешение на различные значения, например, 1280 * 720, вплоть до 640 * 480, единственное изменение - последний номер сообщения об ошибке.

К сожалению, это не такхорошо документированный онлайн, так что я не смог выяснить, что происходит.

Так что это за сообщение об ошибке?Что мне нужно изменить в коде, чтобы установить разрешение?

1 Ответ

0 голосов
/ 23 февраля 2019

camera.resolution должен быть установлен в кортеж с двумя целыми числами:

camera.resolution = 1920, 1080

Запишите запятую.Из документации PiCamera.resolution :

Если установлено, свойство настраивает камеру таким образом, чтобы при следующем вызове этих методов использовалось новое разрешение.Разрешение может быть указано в виде кортежа, в виде строки в формате «WIDTHxHEIGHT» или в виде строки, содержащей общеизвестное имя разрешения дисплея (например, «VGA», «HD», «1080p» и т. Д.).

Если вы чувствуете, что это помогает с удобочитаемостью, вы можете использовать круглые скобки вокруг значений кортежа:

camera.resolution = (1920, 1080)

Вместо этого вы передали результат умножения, одно целое число, а 1920*1080 равно 19201080 - это 2073600, значение в сообщении об исключении.

Вы можете также использовать строковое значение, используя x для разделения ширины и высоты:

camera.resolution = "1920x1080"

Возможно, этот формат привел к ошибке?Я могу себе представить, что кто-то соединит 1920x1080 с 1920*1080, что приведет к этой путанице.

Строки "FHD" и "1080p" также будут правильными, поскольку камеры FHD 1080p используют это точное разрешение .

...