Manvikk commited on
Commit
9ea7720
·
verified ·
1 Parent(s): 7e5b631

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -20
app.py CHANGED
@@ -150,30 +150,37 @@ def process_image(job_id, image_path, object_type, multiplier):
150
  marker_real_width_cm = 5.0
151
  conversion_factor = None
152
  try:
153
- # Use a fresh copy for marker detection to avoid any drawn overlays.
154
- aruco_image = image.copy()
155
- gray = cv2.cvtColor(aruco_image, cv2.COLOR_BGR2GRAY)
156
- # Apply histogram equalization to improve contrast.
157
- gray = cv2.equalizeHist(gray)
158
- # Use the DICT_6X6_250 dictionary. Ensure your printed marker was generated accordingly.
159
- aruco_dict = cv2.aruco.getPredefinedDictionary(cv2.aruco.DICT_6X6_250)
160
- aruco_params = cv2.aruco.DetectorParameters_create()
161
- # Adjust parameters for better detection of small markers:
162
- aruco_params.adaptiveThreshWinSizeMax = 400
163
- aruco_params.minDistanceToBorder = 0
164
- aruco_params.minMarkerPerimeterRate = 0.02 # Lowered from 0.03
165
- aruco_params.cornerRefinementMethod = cv2.aruco.CORNER_REFINE_SUBPIX
166
-
167
- corners, ids, rejected = cv2.aruco.detectMarkers(gray, aruco_dict, parameters=aruco_params)
168
- print("DEBUG: Detected candidate IDs:", ids)
 
 
 
 
 
 
 
169
  if ids is not None and len(ids) > 0:
170
  selected_index = None
171
- # First, try to find marker with ID 42
172
  for i, marker_id in enumerate(ids):
173
  if marker_id[0] == 42:
174
  selected_index = i
175
  break
176
- # If marker 42 is not found, use the first detected marker
177
  if selected_index is None:
178
  print("DEBUG: Marker with ID 42 not found. Using first detected marker.")
179
  selected_index = 0
@@ -189,8 +196,8 @@ def process_image(job_id, image_path, object_type, multiplier):
189
  avg_side_length = np.mean(side_lengths)
190
  conversion_factor = marker_real_width_cm / avg_side_length
191
  print("DEBUG: Detected marker with ID", ids[selected_index][0],
192
- "avg side length (px):", avg_side_length,
193
- "conversion factor:", conversion_factor)
194
  else:
195
  print("DEBUG: No markers detected in ArUco detection.")
196
  except Exception as e:
 
150
  marker_real_width_cm = 5.0
151
  conversion_factor = None
152
  try:
153
+ # Convert to grayscale
154
+ gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
155
+ # Try with histogram equalization
156
+ equalized = cv2.equalizeHist(gray)
157
+
158
+ # Use the DICT_6X6_250 dictionary; ensure your marker is generated with this dictionary.
159
+ aruco_dict = cv2.aruco.Dictionary_get(cv2.aruco.DICT_6X6_250)
160
+ parameters = cv2.aruco.DetectorParameters_create()
161
+ # Optionally tweak parameters if needed:
162
+ parameters.adaptiveThreshWinSizeMax = 400
163
+ parameters.minDistanceToBorder = 0
164
+ parameters.minMarkerPerimeterRate = 0.02
165
+ parameters.cornerRefinementMethod = cv2.aruco.CORNER_REFINE_SUBPIX
166
+
167
+ # First attempt detection on the equalized image
168
+ corners, ids, rejected = cv2.aruco.detectMarkers(equalized, aruco_dict, parameters=parameters)
169
+ print("DEBUG: Detected marker IDs (equalized):", ids)
170
+ # If no markers found, try the original grayscale image
171
+ if ids is None or len(ids) == 0:
172
+ print("DEBUG: No markers detected on equalized image. Trying original grayscale.")
173
+ corners, ids, rejected = cv2.aruco.detectMarkers(gray, aruco_dict, parameters=parameters)
174
+ print("DEBUG: Detected marker IDs (original):", ids)
175
+
176
  if ids is not None and len(ids) > 0:
177
  selected_index = None
178
+ # Try to select marker with ID 42 first
179
  for i, marker_id in enumerate(ids):
180
  if marker_id[0] == 42:
181
  selected_index = i
182
  break
183
+ # If marker 42 is not found, use the first detected marker.
184
  if selected_index is None:
185
  print("DEBUG: Marker with ID 42 not found. Using first detected marker.")
186
  selected_index = 0
 
196
  avg_side_length = np.mean(side_lengths)
197
  conversion_factor = marker_real_width_cm / avg_side_length
198
  print("DEBUG: Detected marker with ID", ids[selected_index][0],
199
+ "Average side length (px):", avg_side_length,
200
+ "Conversion factor:", conversion_factor)
201
  else:
202
  print("DEBUG: No markers detected in ArUco detection.")
203
  except Exception as e: