ahadhassan commited on
Commit
7d5fc79
·
verified ·
1 Parent(s): 1bd3004

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -25
app.py CHANGED
@@ -13,31 +13,23 @@ model = load_model("ndvi_best_model.keras")
13
 
14
  @app.post("/predict/")
15
  async def predict_ndvi_api(file: UploadFile = File(...)):
16
- contents = await file.read()
17
- img = Image.open(BytesIO(contents)).convert("RGB")
18
- rgb_np = np.array(img)
19
- rgb_norm = normalize_rgb(rgb_np)
20
- ndvi = predict_ndvi(model, rgb_norm)
21
 
22
- # Generate visual output
23
- vis_image = create_visualization(rgb_np, ndvi)
24
- vis_filename = "ndvi_visualization.png"
25
 
26
- # Generate GeoTIFF in memory
27
- geotiff_buffer = io.BytesIO()
28
- import rasterio
29
- profile = {
30
- 'driver': 'GTiff',
31
- 'height': ndvi.shape[0],
32
- 'width': ndvi.shape[1],
33
- 'count': 1,
34
- 'dtype': 'float32'
35
- }
36
- with rasterio.open(geotiff_buffer, 'w', **profile) as dst:
37
- dst.write(ndvi, 1)
38
- geotiff_buffer.seek(0)
39
 
40
- return {
41
- "ndvi_tiff": StreamingResponse(geotiff_buffer, media_type="image/tiff", headers={"Content-Disposition": "attachment; filename=predicted_ndvi.tif"}),
42
- "visualization": StreamingResponse(vis_image, media_type="image/png", headers={"Content-Disposition": "attachment; filename=ndvi_visualization.png"})
43
- }
 
13
 
14
  @app.post("/predict/")
15
  async def predict_ndvi_api(file: UploadFile = File(...)):
16
+ try:
17
+ contents = await file.read()
18
+ img = Image.open(BytesIO(contents)).convert("RGB")
 
 
19
 
20
+ # Preprocess & predict
21
+ norm_img = normalize_rgb(np.array(img))
22
+ pred_ndvi = predict_ndvi(model, norm_img)
23
 
24
+ # Create visualization
25
+ vis_img = create_visualization(norm_img, pred_ndvi)
26
+
27
+ # Convert to bytes
28
+ img_byte_arr = BytesIO()
29
+ vis_img.save(img_byte_arr, format='PNG')
30
+ img_byte_arr.seek(0)
31
+
32
+ return StreamingResponse(img_byte_arr, media_type="image/png")
33
+ except Exception as e:
34
+ return JSONResponse(status_code=500, content={"error": str(e)})
 
 
35