当前位置: 代码迷 >> 综合 >> python+flask+多线程
  详细解决方案

python+flask+多线程

热度:15   发布时间:2024-01-13 14:03:44.0

通过url打开使用opencv访问摄像头,如果没有调用close函数就一直正常识别,否则关掉。

from flask import Flask,request
import cv2
from concurrent.futures import ThreadPoolExecutorapp = Flask(__name__)closeState = False@app.route('/open',methods=["GET","POST"])
def hello_world():winName = request.args.get("winName")name = request.args.get("name")print(winName,name)future = pool.submit(taskOpen,winName,name)future.add_done_callback(openDone)return future.result()def taskOpen(winName,name):cap = cv2.VideoCapture(0)while True:ret, img = cap.read()if ret:cv2.imshow(winName,img)# if cv2.waitKey(1) & 0XFF == ord('q'):global closeStateprint(name)if cv2.waitKey(1) and closeState==True: # 中间停止cv2.destroyWindow(winName)closeState=Falsereturn "1"elif name=="hblee": # 正常识别cv2.waitKey(3000)cv2.destroyWindow(winName)return namedef openDone(response):print('in openDone',response.result())@app.route('/close')
def helloClose():future = pool.submit(taskClose)future.add_done_callback(closeDone)return future.result()def taskClose():global closeStatecloseState = Truereturn str(closeState)def closeDone(response):print('in close done',response.result())if __name__ == '__main__':pool = ThreadPoolExecutor(10)app.run()

  相关解决方案