用不同的脚本控制picamera

问题描述 投票:0回答:2

我想控制一个带有python的picamera的覆盆子相机。我创建了一个带按钮的QT界面,我想用它们开始和停止录制,例如,点击一个按钮1,我调用一个开始录制的python脚本,点击button2停止录制。当然我不知道它是否有意义,在这两个脚本中我必须分配一个“picamera”对象,但我不知道它们是否会引用相同的对象..想法?否则,我只能记录一段确定的时间,开始等待一段时间并在同一个脚本中停止记录。谢谢

python raspberry-pi
2个回答
1
投票

只需将您的代码放入python脚本即可开始录制并停止录制。通过REST API(HTTP端点)使它们可用。为此,Python-Flask将帮助您全局创建picamera对象,然后在python脚本中定义两个方法(函数),这将开始录制并停止录制。使用URL(HTTP端点)映射这两个方法。

在客户端(QT接口),当您单击按钮时,只需调用您的REST API(您的HTTP URL)。

这就是我在做的事情,我有控制我的相机的web应用程序(HTML和JS),后端我有python,picamera和flask。


1
投票

我创建了一个文件python,它与Flask一起运行。它可以帮助别人,所以我在这里报告我的代码:

import datetime as dt

from picamera import PiCamera
from time import sleep
from datetime import datetime

from flask import Flask
app = Flask(__name__)


camera = PiCamera()

@app.route('/')
def hello_word():
    return 'Camera control ready'

@app.route('/StartRecord')
def start_record():
    global camera
    timestamp = datetime.now().strftime("%y%m%d_%H%M%S")
    camera.resolution = (1920, 1080)
    camera.rotation = 180
    camera.start_recording('/home/pi/Videos/Video_{}.h264'.format(timestamp))

    return 'Camera recording...'

@app.route('/StopRecord')
def stop_record():
    global camera
    camera.stop_recording()
        return 'Camera video stopped!'

@app.route('/TakePicture')
def take_picture():
        global camera
        timestamp = datetime.now().strftime("%y%m%d_%H%M%S")
        camera.resolution = (1920, 1080)
    camera.rotation = 180
        camera.capture('/home/pi/Pictures/Photo_{}.jpg'.format(timestamp))

        return 'Camera photo captured!'

@app.route('/StartLive')
def start_live():
        global camera
        camera.preview_fullscreen=False
        camera.resolution =(944, 600)
    camera.rotation = 180
        camera.preview_window=(0,0,944,600)

        preview = camera.start_preview()

    return 'Camera start live!'

@app.route('/StopLive')
def stop_live():
        global camera
        camera.stop_preview()
        return 'Camera stop live!'

if __name__ == '__main__':
    app.run(host='0.0.0.0')

@webDev,如果您有任何其他提示,请告诉我。谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.