Save Analyzed image
This commit is contained in:
@@ -1,6 +1,11 @@
|
|||||||
import cv2
|
import cv2
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from typing import Dict, Any, Optional
|
from typing import Dict, Any, Optional
|
||||||
|
sys.path.insert(0, '..')
|
||||||
|
try:
|
||||||
|
from shared import config
|
||||||
|
except ImportError:
|
||||||
|
from ..shared import config
|
||||||
|
|
||||||
|
|
||||||
class MicrowaveDishAnalyzer:
|
class MicrowaveDishAnalyzer:
|
||||||
@@ -42,6 +47,17 @@ class MicrowaveDishAnalyzer:
|
|||||||
largest_contour = max(contours, key=cv2.contourArea)
|
largest_contour = max(contours, key=cv2.contourArea)
|
||||||
area_pixels = cv2.contourArea(largest_contour)
|
area_pixels = cv2.contourArea(largest_contour)
|
||||||
|
|
||||||
|
# DEBUG CONDITION: Draw and save contour image if DEBUG_DISHANALYZER is set
|
||||||
|
if getattr(config, "DEBUG_DISHANALYZER", False):
|
||||||
|
annotated_image = image.copy()
|
||||||
|
# Draw the contour in red (BGR: 0, 0, 255) with thickness of 2
|
||||||
|
cv2.drawContours(annotated_image, [largest_contour], -1, (0, 0, 255), 2)
|
||||||
|
|
||||||
|
# Handle file extensions gracefully
|
||||||
|
analyzed_path = image_path.replace(".jpg", "_analyzed.jpg")
|
||||||
|
|
||||||
|
cv2.imwrite(analyzed_path, annotated_image)
|
||||||
|
|
||||||
# 5. Convert pixels² to cm² using scale ratio squared
|
# 5. Convert pixels² to cm² using scale ratio squared
|
||||||
area_cm2 = area_pixels * (self.cm_per_pixel ** 2)
|
area_cm2 = area_pixels * (self.cm_per_pixel ** 2)
|
||||||
return float(area_cm2)
|
return float(area_cm2)
|
||||||
@@ -64,13 +80,13 @@ class MicrowaveDishAnalyzer:
|
|||||||
return 0.85 # Default factor for plated meals
|
return 0.85 # Default factor for plated meals
|
||||||
|
|
||||||
def estimate_volume(
|
def estimate_volume(
|
||||||
self, image_path: str, height_cm: float, food_label: str = ""
|
self, image_path: str, height_cm: float, food_label: str = "", config: Optional[Any] = None
|
||||||
) -> Dict[str, float]:
|
) -> Dict[str, float]:
|
||||||
"""
|
"""
|
||||||
Computes total physical volume in cm³ (mL).
|
Computes total physical volume in cm³ (mL).
|
||||||
Volume = Area (cm²) * Height (cm) * Shape Factor
|
Volume = Area (cm²) * Height (cm) * Shape Factor
|
||||||
"""
|
"""
|
||||||
area_cm2 = self.calculate_surface_area_cm2(image_path)
|
area_cm2 = self.calculate_surface_area_cm2(image_path, config=config)
|
||||||
k_shape = self._get_shape_factor(food_label)
|
k_shape = self._get_shape_factor(food_label)
|
||||||
volume_cm3 = area_cm2 * height_cm * k_shape
|
volume_cm3 = area_cm2 * height_cm * k_shape
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user