first commit
This commit is contained in:
1 parent
ae53e9eac5
commit
91cbd01126
514 files changed
+55625
-2203
No files matched your search
+53
@@ -0,0 +1,53 @@
|
||||
from fastapi import FastAPI, HTTPException, Query
|
||||
from fastapi.responses import FileResponse, JSONResponse
|
||||
import os
|
||||
import traceback
|
||||
from processor import process_video_to_panorama
|
||||
|
||||
app = FastAPI(title="Video Density Estimation API")
|
||||
|
||||
@app.get("/process")
|
||||
async def process_video(
|
||||
input_video: str = Query(..., description="Path to input video file"),
|
||||
output_dir: str = Query(..., description="Output directory path")
|
||||
):
|
||||
"""
|
||||
Process video to generate density estimation result
|
||||
|
||||
Args:
|
||||
input_video: Path to input video file (e.g., /path/to/video.mp4)
|
||||
output_dir: Output directory path (e.g., /path/to/output)
|
||||
|
||||
Returns:
|
||||
JSON with result path or error message
|
||||
"""
|
||||
try:
|
||||
# Validate input video
|
||||
if not os.path.exists(input_video):
|
||||
raise HTTPException(status_code=400, detail=f"Input video not found: {input_video}")
|
||||
|
||||
# Process video
|
||||
result_path,total_count = process_video_to_panorama(input_video, output_dir)
|
||||
|
||||
return JSONResponse({
|
||||
"status": "success",
|
||||
"result_path": result_path,
|
||||
"total_count": int(total_count),
|
||||
"message": "Processing completed successfully"
|
||||
})
|
||||
|
||||
except Exception as e:
|
||||
error_msg = f"Processing failed: {str(e)}"
|
||||
print(f"Error traceback:\n{traceback.format_exc()}")
|
||||
raise HTTPException(status_code=500, detail=error_msg)
|
||||
|
||||
@app.get("/result")
|
||||
async def get_result(result_path: str = Query(..., description="Path to result image")):
|
||||
"""Download result image"""
|
||||
if not os.path.exists(result_path):
|
||||
raise HTTPException(status_code=404, detail="Result image not found")
|
||||
return FileResponse(result_path)
|
||||
|
||||
if __name__ == "__main__":
|
||||
import uvicorn
|
||||
uvicorn.run(app, host="0.0.0.0", port=8000)
|
||||
Reference in new issue
Block a user