Update app.py
Browse files
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 |
-
#
|
| 154 |
-
|
| 155 |
-
|
| 156 |
-
|
| 157 |
-
|
| 158 |
-
# Use the DICT_6X6_250 dictionary
|
| 159 |
-
aruco_dict = cv2.aruco.
|
| 160 |
-
|
| 161 |
-
#
|
| 162 |
-
|
| 163 |
-
|
| 164 |
-
|
| 165 |
-
|
| 166 |
-
|
| 167 |
-
|
| 168 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 169 |
if ids is not None and len(ids) > 0:
|
| 170 |
selected_index = None
|
| 171 |
-
#
|
| 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 |
-
"
|
| 193 |
-
"
|
| 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:
|