树莓派相机.资源不足



尝试启动带有运动传感器的相机。工作原理如下:

import RPi.GPIO as GPIO
import time
import picamera
import datetime
import os
def getFileName():
    return datetime.datetime.now().strftime("%Y-%m-%d_%H.%M.%S.h264")
pin = 4
GPIO.setmode(GPIO.BCM)
GPIO.setup(pin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
prevState = False
currState = False
camera = picamera.PiCamera()
while True:
    time.sleep(0.1)
    prevState = currState
    currState = GPIO.input(pin)
    if currState != prevState:
        newState = "HIGH" if currState else "LOW"
        print ("GPIO pin %s is %s" % (pin, newState))
        if currState:
            fileName = getFileName()
            print ("Starting Recording...")
            camera.start_preview()
            camera.start_recording(fileName)
            time.sleep(10)
            print (fileName)
        else:
            camera.stop_preview()
            time.sleep(1)
            camera.stop_recording()
            print ("Stopped Recording")
    else:
        print("No motions")

但后来我试图为龙卷风服务器定义我的功能:

def secure_on(prevState, currState):
    pin = 4
    #GPIO.setmode(GPIO.BCM)
    #GPIO.setup(pin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
    #camera = picamera.PiCamera()
    time.sleep(0.1)
    prevState = currState
    #currState = GPIO.input(pin)
    if currState != prevState:
        newState = "HIGH" if currState else "LOW"
        return {'info': "GPIO pin %s is %s" % (pin, newState)}
        if currState:
            fileName = getFileName()
            print ("Starting Recording...")
            #camera.start_preview()
            #camera.start_recording(fileName)
            time.sleep(10)
            return {'info': fileName}
        else:
            #camera.stop_preview()
            time.sleep(1)
            #camera.stop_recording()
            return {'info': "Stopped Recording"}
    else:
        return {'info': "No motions"}

龙卷风:

class SecureOnHandler(tornado.web.RequestHandler):
    @gen.coroutine
    def get(self):
        result = RosPi.secure_on(prevSec, currSec)
        self.write({"info": result['info']})

之后我得到一个错误

"无法启用相机组件:资源不足(内存除外)错误:龙卷风。访问:上的500 GET/secure_on

是什么原因导致了错误?提前感谢!

我知道这是一个老问题,但我只是想发布我对Out of resources错误的解决方案,以防它能为某人节省时间和精力。

对我来说,问题是我在初始化相机模块时同时使用了两个Python文件(一个带有while循环的脚本在检测到运动时拍摄照片,另一个脚本在需要时拍摄照片)。

根据文件:https://picamera.readthedocs.io/en/release-1.13/faq.html#camera-通过多处理锁定,您必须确保一次只有一个进程创建PiCamera的实例。

我的解决方案只是在一个函数中初始化相机模块,并在拍照后调用.close(),以释放进程,为下一个调用它的脚本使用做好准备。

最新更新