什么是无效的分辨率元组?

问题描述 投票:1回答:1

我有一个Raspberry Pi相机,根据specs,它具有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,唯一的变化是错误消息的最后一个数字。

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

那么这个错误信息是什么?我需要在代码中修改什么来设置分辨率?

python python-3.5 raspberry-pi3
1个回答
1
投票

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

camera.resolution = 1920, 1080

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

设置后,属性会配置摄像头,以便下次调用这些方法时将使用新的分辨率。分辨率可以指定为元组,格式化为“WIDTHxHEIGHT”的字符串,或者包含公认的显示分辨率名称(例如“VGA”,“HD”,“1080p”等)的字符串。

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

camera.resolution = (1920, 1080)

你传递了乘法的结果,而不是单个整数,而1920*1080是1920倍1080是2073600,异常消息中的值。

您还可以使用字符串值,使用x分隔宽度和高度:

camera.resolution = "1920x1080"

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

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

© www.soinside.com 2019 - 2024. All rights reserved.