Track-Anything / text_server.py
watchtowerss's picture
track-anything --version 1
4d1ebf3
raw
history blame
2.15 kB
import os
import sys
import cv2
import time
import json
import queue
import numpy as np
import requests
import concurrent.futures
from PIL import Image
from flask import Flask, render_template, request, jsonify, send_file
import torchvision
import torch
from demo import automask_image_app, automask_video_app, sahi_autoseg_app
sys.path.append(sys.path[0] + "/tracker")
sys.path.append(sys.path[0] + "/tracker/model")
from track_anything import TrackingAnything
from track_anything import parse_augment
# ... (all the functions defined in the original code except the Gradio part)
app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = './uploaded_videos'
app.config['ALLOWED_EXTENSIONS'] = {'mp4', 'avi', 'mov', 'mkv'}
def allowed_file(filename):
return '.' in filename and filename.rsplit('.', 1)[1].lower() in app.config['ALLOWED_EXTENSIONS']
@app.route("/")
def index():
return render_template("index.html")
@app.route("/upload_video", methods=["POST"])
def upload_video():
# ... (handle video upload and processing)
return jsonify(status="success", data=video_data)
@app.route("/template_select", methods=["POST"])
def template_select():
# ... (handle template selection and processing)
return jsonify(status="success", data=template_data)
@app.route("/sam_refine", methods=["POST"])
def sam_refine_request():
# ... (handle sam refine and processing)
return jsonify(status="success", data=sam_data)
@app.route("/track_video", methods=["POST"])
def track_video():
# ... (handle video tracking and processing)
return jsonify(status="success", data=tracking_data)
@app.route("/track_image", methods=["POST"])
def track_image():
# ... (handle image tracking and processing)
return jsonify(status="success", data=tracking_data)
@app.route("/download_video", methods=["GET"])
def download_video():
try:
return send_file("output.mp4", attachment_filename="output.mp4")
except Exception as e:
return str(e)
if __name__ == "__main__":
app.run(debug=True, host="0.0.0.0", port=args.port)
if __name__ == '__main__':
app.run(host="0.0.0.0",port=12212, debug=True)