pref: clean code format

This commit is contained in:
2026-06-02 09:56:59 +08:00
parent 2ad2836d77
commit 99614fe321

View File

@@ -1,10 +1,12 @@
from maix import image, time
from camera_manager import camera_manager
_USE_CV = False
try:
import cv2
import numpy as np
_USE_CV = True
except ImportError:
pass
@@ -45,7 +47,8 @@ def find_ellipse(img_cv, cx, cy, roi_r, th, ratio):
(ex, ey), (ew, eh), ang = cv2.fitEllipse(cnt)
mask_ellipse = np.zeros((HEIGHT, WIDTH), dtype=np.uint8)
cv2.ellipse(mask_ellipse, (int(ex), int(ey)), (int(ew / 2), int(eh / 2)), ang, 0, 360, 255, -1)
brightness = img_cv[:, :, 0].astype(np.int32) + img_cv[:, :, 1].astype(np.int32) + img_cv[:, :, 2].astype(np.int32)
brightness = img_cv[:, :, 0].astype(np.int32) + img_cv[:, :, 1].astype(np.int32) + img_cv[:, :, 2].astype(
np.int32)
masked = np.where(mask_ellipse > 0, brightness, 0)
vals = masked[masked > 0]
if len(vals) > 0:
@@ -78,26 +81,33 @@ def find_brightest_bytes(frame, cx, cy, roi_r, th, ratio):
for y in range(y1, y2, 2):
for x in range(x1, x2, 2):
idx = (y * WIDTH + x) * 3
r = data[idx]; g = data[idx+1]; b = data[idx+2]
r = data[idx];
g = data[idx + 1];
b = data[idx + 2]
if (r > th and r > g * ratio and r > b * ratio) or \
(r > 200 and g > 200 and b > 200 and r >= g and r >= b and (r - g) > 10 and (r - b) > 10):
score = r + g + b
dx = x - cx; dy = y - cy
score *= max(0.5, 1.0 - ((dx*dx + dy*dy) ** 0.5 / roi_r) * 0.5)
dx = x - cx;
dy = y - cy
score *= max(0.5, 1.0 - ((dx * dx + dy * dy) ** 0.5 / roi_r) * 0.5)
if score > best_score:
best_score = score
best_pos = (x, y)
if best_pos is None:
return None
fx, fy = best_pos
x1f = max(0, fx - 3); x2f = min(WIDTH, fx + 4)
y1f = max(0, fy - 3); y2f = min(HEIGHT, fy + 4)
x1f = max(0, fx - 3);
x2f = min(WIDTH, fx + 4)
y1f = max(0, fy - 3);
y2f = min(HEIGHT, fy + 4)
best_bright = 0
final_pos = best_pos
for y in range(y1f, y2f):
for x in range(x1f, x2f):
idx = (y * WIDTH + x) * 3
r = data[idx]; g = data[idx+1]; b = data[idx+2]
r = data[idx];
g = data[idx + 1];
b = data[idx + 2]
if (r > th and r > g * ratio and r > b * ratio) or \
(r > 200 and g > 200 and b > 200 and r >= g and r >= b and (r - g) > 10 and (r - b) > 10):
rgb_sum = r + g + b
@@ -108,7 +118,6 @@ def find_brightest_bytes(frame, cx, cy, roi_r, th, ratio):
def get_stable_laser_point(timeout_ms=15000, stable_count=STABLE_COUNT):
own_cam = False
try:
last_pos = None
stable = 0
@@ -139,8 +148,4 @@ def get_stable_laser_point(timeout_ms=15000, stable_count=STABLE_COUNT):
return (int(pos[0]), int(pos[1]))
time.sleep_ms(500)
finally:
if own_cam:
try:
cam.close()
except:
pass