Python无法从Raspberry Pi相机以最高分辨率拍照

Python无法从Raspberry Pi相机以最高分辨率拍照,python,camera,raspberry-pi,Python,Camera,Raspberry Pi,我有一个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

我有一个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)
mmal:mmal\u vc\u port\u enable:无法启用端口vc.ril.image\u encode:out:0(PNG):PC
mmal:mmal_端口_启用:未能启用端口vc.ril。图像_编码:输出:0(PNG)(0x700090)(ENOSPC)
回溯(最近一次呼叫最后一次):
文件“pic.py”,第6行,在
camera.capture(“test.png”)
文件“/usr/local/lib/python2.7/dist-packages/picamera/camera.py”,第1383行,截图中
编码器启动(输出)
文件“/usr/local/lib/python2.7/dist packages/picamera/encoders.py”,第1024行,在开始处
超级(PiCookedOneImageEncoder,自)。启动(输出)
文件“/usr/local/lib/python2.7/dist packages/picamera/encoders.py”,第394行,在开始处
self.output\u port.enable(self.\u回调)
文件“/usr/local/lib/python2.7/dist packages/picamera/mmalobj.py”,第813行,在enable中
前缀=“无法启用端口%s”%self.name)
文件“/usr/local/lib/python2.7/dist packages/picamera/exc.py”,第157行,在mmal_检查中
raise PICAMERAMALERROR(状态,前缀)
picamera.exc.PicameralError:无法启用端口vc.ril.image_encode:输出:0(PNG):资源不足(内存除外)
我已经注意到用.jpg而不是.png来做这件事是可行的。这对我来说似乎有点奇怪,因为文档中说它应该可以工作,而raspistill命令也可以在.png上使用这种分辨率


有什么想法吗?

我遇到了同样的问题。我可以通过将Pi的“内存分割”设置调整为256MB来解决这个问题。这会更改GPU的可用内存量


您可以通过运行
sudo raspi config
来访问此设置。“内存拆分”位于“高级选项”下。

查看picamera()库如何?正如我前面提到的,我已经查看了文档,其中特别提到PNG可以工作。尝试降低分辨率现在它位于
性能选项:GPU内存