我正在创建使用PiCam的论文设备。我的问题是,每次我使用相机捕获图像后,当我单击GUI上的按钮再次启动相机时,它不能再次使用并显示错误:
picamera.exc.PiCameraMMALError:无法启用连接:资源不足
如何在拍摄图像后以某种方式停止相机,它还会停止使用picamera的资源?
这是我的相机代码:
def startcam():
camera = PiCamera()
GPIO.output(16, True)
filename = datetime.datetime.now().strftime("%Y-%m-%d-%H.%M.%S.jpg")
time.sleep(2)
camera.start_preview()
sleep(1)
GPIO.output(16, False)
GPIO.output(13, True)
camera.capture(filename)
GPIO.output(13, False)
sleep(1)
camera.stop_preview()
webbrowser.open(filename)
GPIO代码适用于我的LED闪光灯和红外线LED,因为我使用的是NOIR相机。
感谢。
答案 0 :(得分:0)
如果要捕获许多图像,则应在函数外部全局声明相机:
camera=Picamera()
def startcam():
GPIO.output(16, True)
...
答案 1 :(得分:0)
我写了一个小程序,需要一系列图片。它在IDLE中工作正常,但从命令行中却遇到了资源完全相同的错误。通过在程序中的{KeyboardInterrupt ::}之后添加camera.close()
可以解决此问题,即Ctrl+C
(在Python shell中)。通常在需要中断循环时使用。