lokesh341 commited on
Commit
51c44a6
·
1 Parent(s): 32d3ff7

Update services/thermal_service.py

Browse files
Files changed (1) hide show
  1. services/thermal_service.py +6 -14
services/thermal_service.py CHANGED
@@ -9,7 +9,7 @@ logging.basicConfig(
9
  format="%(asctime)s - %(levelname)s - %(message)s"
10
  )
11
 
12
- def process_thermal(frame):
13
  """
14
  Process a thermal (grayscale) frame to detect hot/cold spots.
15
  Args:
@@ -18,41 +18,33 @@ def process_thermal(frame):
18
  dict: Results with detections and annotated frame
19
  """
20
  try:
21
- # Ensure frame is grayscale
22
  if len(frame.shape) == 3:
23
  frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
24
 
25
- # Threshold to detect hot spots (high intensity)
26
  _, hot_mask = cv2.threshold(frame, 200, 255, cv2.THRESH_BINARY)
27
  contours, _ = cv2.findContours(hot_mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
28
 
29
- # Convert grayscale to BGR for annotation
30
  frame_bgr = cv2.cvtColor(frame, cv2.COLOR_GRAY2BGR)
31
-
32
  detections = []
33
- line_counter = 1 # Initialize counter for numbered labels
34
 
35
  for contour in contours:
36
  area = cv2.contourArea(contour)
37
- if area < 200: # Filter small areas
38
  continue
39
  x, y, w, h = cv2.boundingRect(contour)
40
  x_min, y_min, x_max, y_max = x, y, x + w, y + h
41
-
42
- # Add numbered label
43
  detection_label = f"Line {line_counter} - Hot Spot"
44
  detections.append({
45
  "type": "hot_spot",
46
  "label": detection_label,
47
- "coordinates": [x_min, y_min, x_max, y_max]
 
48
  })
49
-
50
- # Draw bounding box and label
51
- color = (255, 69, 0) # OrangeRed for hot spots
52
  cv2.rectangle(frame_bgr, (x_min, y_min), (x_max, y_max), color, 2)
53
  cv2.putText(frame_bgr, detection_label, (x_min, y_min - 10),
54
  cv2.FONT_HERSHEY_SIMPLEX, 0.5, color, 2)
55
-
56
  line_counter += 1
57
 
58
  logging.info(f"Detected {len(detections)} hot spots in thermal frame.")
 
9
  format="%(asctime)s - %(levelname)s - %(message)s"
10
  )
11
 
12
+ def process_thermal(frame: np.ndarray) -> Dict[str, Any]:
13
  """
14
  Process a thermal (grayscale) frame to detect hot/cold spots.
15
  Args:
 
18
  dict: Results with detections and annotated frame
19
  """
20
  try:
 
21
  if len(frame.shape) == 3:
22
  frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
23
 
 
24
  _, hot_mask = cv2.threshold(frame, 200, 255, cv2.THRESH_BINARY)
25
  contours, _ = cv2.findContours(hot_mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
26
 
 
27
  frame_bgr = cv2.cvtColor(frame, cv2.COLOR_GRAY2BGR)
 
28
  detections = []
29
+ line_counter = 1
30
 
31
  for contour in contours:
32
  area = cv2.contourArea(contour)
33
+ if area < 200:
34
  continue
35
  x, y, w, h = cv2.boundingRect(contour)
36
  x_min, y_min, x_max, y_max = x, y, x + w, y + h
 
 
37
  detection_label = f"Line {line_counter} - Hot Spot"
38
  detections.append({
39
  "type": "hot_spot",
40
  "label": detection_label,
41
+ "box": [x_min, y_min, x_max, y_max],
42
+ "severity": "Moderate"
43
  })
44
+ color = (255, 69, 0)
 
 
45
  cv2.rectangle(frame_bgr, (x_min, y_min), (x_max, y_max), color, 2)
46
  cv2.putText(frame_bgr, detection_label, (x_min, y_min - 10),
47
  cv2.FONT_HERSHEY_SIMPLEX, 0.5, color, 2)
 
48
  line_counter += 1
49
 
50
  logging.info(f"Detected {len(detections)} hot spots in thermal frame.")