Python无法从树莓派相机中以最高分辨率拍照。

5

我有一个Raspberry Pi相机v2.1版本,可以拍摄分辨率为3280x2464的照片。

我已经使用raspistill命令进行了测试,似乎一切正常:

raspistill -o 8mp.png -w 3280 -h 2464

返回信息:

8mp.png JPEG 3280x2464 3280x2464+0+0 8-bit sRGB 4.524MB 0.010u 0:00.010

然而,当我使用Python代码拍照时,它会拒绝。这是我正在使用的代码:

#!/usr/bin/python
import picamera

camera = picamera.PiCamera()
camera.resolution = (3280,2464)
camera.capture("test.png")
camera.close()

这是错误信息:

mmal: mmal_vc_port_enable: failed to enable port vc.ril.image_encode:out:0(PNG ): ENOSPC
mmal: mmal_port_enable: failed to enable port vc.ril.image_encode:out:0(PNG )(0x700090) (ENOSPC)
Traceback (most recent call last):
  File "pic.py", line 6, in <module>
    camera.capture("test.png")
  File "/usr/local/lib/python2.7/dist-packages/picamera/camera.py", line 1383, in capture
    encoder.start(output)
  File "/usr/local/lib/python2.7/dist-packages/picamera/encoders.py", line 1024, in start
    super(PiCookedOneImageEncoder, self).start(output)
  File "/usr/local/lib/python2.7/dist-packages/picamera/encoders.py", line 394, in start
    self.output_port.enable(self._callback)
  File "/usr/local/lib/python2.7/dist-packages/picamera/mmalobj.py", line 813, in enable
    prefix="Unable to enable port %s" % self.name)
  File "/usr/local/lib/python2.7/dist-packages/picamera/exc.py", line 157, in mmal_check
    raise PiCameraMMALError(status, prefix)
picamera.exc.PiCameraMMALError: Unable to enable port vc.ril.image_encode:out:0(PNG ): Out of resources (other than memory)

我注意到使用 .jpg 而不是 .png 可以正常工作。这对我来说有点奇怪,因为文档中说它应该可以工作,而且 raspistill 命令也可以在 .png 上使用此分辨率。有任何想法吗?

不妨看看 picamera(https://picamera.readthedocs.io/en/release-1.12/)库? - Ma0
正如我之前提到的,我已经查看了文档,并且它明确提到PNG可以使用。 - user5740843
尝试降低分辨率。 - theBugger
1个回答

10

我遇到了同样的问题。通过将树莓派的“内存分配”设置调整为256MB,我成功解决了它。这会改变GPU可用的内存数量。

您可以通过运行sudo raspi-config来访问此设置。 "内存分配"选项在"高级选项"下。


2
现在它位于“性能选项:GPU内存”处。 - jlandercy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接