python-2.7 - 从命令提示符运行脚本时,PiCamera 无法初始化为类成员

标签 python-2.7 camera raspberry-pi

在我的 Raspberry Pi 上,我遇到了有关使用 PiCamera 模块的奇怪行为。

当从 IDLE (F5) 或命令提示符 ($python test.py) 启动时,以下代码运行顺利

import picamera

if __name__ == "__main__":
    camera=picamera.PiCamera()
    camera.close()

但是当我将相机对象放入一个类时,代码只会在从 IDLE (F5) 启动时运行:
import picamera

class VF:
    def __init__(self):
        self.camera = picamera.PiCamera()

    def __del__(self):
        self.camera.close()


if __name__ == "__main__":
    myvf = VF()

当我从命令提示符启动上述代码时,我收到以下错误消息:

mmal: mmal_vc_component_enable: failed to enable component: ENOSPC

Traceback (most recent call last): File "test.py", line 14, in myvf = VF()

File "test.py", line 6, in init self.camera = picamera.PiCamera()

File "/usr/lib/python2.7/dist-packages/picamera/camera.py", line 379, in init camera_num, self.STEREO_MODES[stereo_mode], stereo_decimate)

File "/usr/lib/python2.7/dist-packages/picamera/camera.py", line 505, in _init_camera prefix="Camera component couldn't be enabled")

File "/usr/lib/python2.7/dist-packages/picamera/exc.py", line 133, in mmal_check raise PiCameraMMALError(status, prefix)

picamera.exc.PiCameraMMALError: Camera component couldn't be enabled: Out of resources (other than memory)



相机模块工作正常,我只是将代码剥离到尽可能小的尺寸。有没有人知道这个问题或类似的问题,并且可以提供解决方案? Python 版本是 2.7,Raspberry Rasbiab 系统是完全最新的。
提前致谢。

最佳答案

我为此苦苦挣扎了几个小时,并且不断出现“资源不足”错误。我终于发现,在我的拍照功能中,我需要确保我是这样做的:

相机 = PiCamera()
(...这里的相机设置...)
camera.capture(myfileName)
相机.close()

如果我不执行 close(),我每次都会收到该错误。
因此,请确保在“快照”之后立即调用 camera.close()。它为我解决了这个问题。

关于python-2.7 - 从命令提示符运行脚本时,PiCamera 无法初始化为类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27468543/

相关文章:

python - 有什么建议可以比当前方法更快地生成 newlist.append(q) 列表吗?

java - 如何将捕获的图像从自定义相机传递到另一个 Activity ?

ios - iphone 上相机应用程序的 AVFoundation AVCaptureDevice 设置是什么?

linux - 树莓派内核交叉编译时一些命令的含义

python - 在 gpiozero 中模拟 "button pressed"上升事件

python-2.7 - 将字符串列表转换为整数列表

python-2.7 - GAE导入端点 "No module named endpoints"

css - 如何将 Gtk.InfoBar 的背景颜色更改为黄色?

c++ - Opengl 相机和乘法矩阵

linux - 带有 freerdp 非事件超时的远程桌面