什么是无效解析元组?

What is an Invalid Resolution Tuple?

我有一台 Raspberry Pi 相机,根据 specs

,它的 'best resolution' 为 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,唯一的变化是错误消息的最后一个数字。

不幸的是,这在网上没有很好的记录,所以我一直无法找出发生了什么。

那么这条错误消息是什么?设置分辨率需要在代码中修改什么?

camera.resolution 应设置为具有两个整数的 元组

camera.resolution = 1920, 1080

注意逗号。来自 PiCamera.resolution documentation:

When set, the property configures the camera so that the next call to these methods will use the new resolution. The resolution can be specified as a tuple, as a string formatted 'WIDTHxHEIGHT', or as a string containing a commonly recognized display resolution name (e.g. “VGA”, “HD”, “1080p”, etc).

如果您觉得它有助于提高可读性,您可以在元组值周围使用括号:

camera.resolution = (1920, 1080)

你传入的是乘法结果,一个整数,1920*1080是1920乘以1080是2073600,异常信息中的值。

也可以使用字符串值,使用x分隔宽高:

camera.resolution = "1920x1080"

也许是这种格式导致了错误?我可以想象有人将 1920x10801920*1080 联系起来,导致这种混乱。

字符串 "FHD""1080p" 也是正确的,因为 FHD 1080p cameras use that exact resolution.