我有一台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,唯一的更改是错误消息的最后一个数字。
不幸的是,这在网上没有得到充分的记录,所以我一直无法找出正在发生的事情。
那么这是什么错误消息?我需要在代码中进行哪些修改才能设置分辨率?
答案 0 :(得分:1)
camera.resolution
应该设置为具有两个整数的 tuple :
camera.resolution = 1920, 1080
请注意逗号。来自PiCamera.resolution
documentation:
设置后,该属性将配置摄像机,以便对这些方法的下一次调用将使用新的分辨率。分辨率可以指定为元组,格式为“ WIDTHxHEIGHT”的字符串,也可以指定为包含公认的显示分辨率名称的字符串(例如“ VGA”,“ HD”,“ 1080p”等)。
您认为它有助于提高可读性,您可以在元组值周围使用括号:
camera.resolution = (1920, 1080)
您传入的是乘法运算的结果,而是一个整数,并且1920*1080
是1920乘以1080的2073600,即异常消息中的值。
您还可以使用字符串值,并使用x
分隔宽度和高度:
camera.resolution = "1920x1080"
也许这种格式导致了错误?我可以想象有人将1920x1080
与1920*1080
连接起来,从而导致这种混乱。
字符串"FHD"
和"1080p"
也将是正确的,例如FHD 1080p cameras use that exact resolution。