pref: 20 cm adapter

This commit is contained in:
2026-06-04 15:58:07 +08:00
parent 1a0bfd54f7
commit 860f9c84c3
5 changed files with 14 additions and 13 deletions

View File

@@ -1,6 +1,6 @@
id: t11 id: t11
name: t11 name: t11
version: 2.15.8 version: 2.15.9
author: t11 author: t11
icon: '' icon: ''
desc: t11 desc: t11

View File

@@ -36,7 +36,7 @@ def detect_circle_v3(frame, laser_point=None, img_cv=None):
print(f"[detect_circle_v3] begin {datetime.now()}") print(f"[detect_circle_v3] begin {datetime.now()}")
# -- 1. 缩图加速(与三角形路径保持一致) # -- 1. 缩图加速(与三角形路径保持一致)
h_orig, w_orig = img_cv.shape[:2] h_orig, w_orig = img_cv.shape[:2]
MAX_DET_DIM = 320 MAX_DET_DIM = 480
long_side = max(h_orig, w_orig) long_side = max(h_orig, w_orig)
if long_side > MAX_DET_DIM: if long_side > MAX_DET_DIM:
det_scale = MAX_DET_DIM / long_side det_scale = MAX_DET_DIM / long_side
@@ -81,10 +81,10 @@ def detect_circle_v3(frame, laser_point=None, img_cv=None):
red_candidates = [] red_candidates = []
for cnt_r in contours_red: for cnt_r in contours_red:
ar = cv2.contourArea(cnt_r) ar = cv2.contourArea(cnt_r)
if ar <= 30: if ar <= 10:
continue continue
pr = cv2.arcLength(cnt_r, True) pr = cv2.arcLength(cnt_r, True)
if pr <= 0 or (4 * np.pi * ar) / (pr * pr) <= 0.4: if pr <= 0 or (4 * np.pi * ar) / (pr * pr) <= 0.3:
continue continue
if len(cnt_r) >= 5: if len(cnt_r) >= 5:
(xr, yr), (wr, hr), _ = cv2.fitEllipse(cnt_r) (xr, yr), (wr, hr), _ = cv2.fitEllipse(cnt_r)
@@ -100,13 +100,13 @@ def detect_circle_v3(frame, laser_point=None, img_cv=None):
valid_targets = [] valid_targets = []
for cnt_yellow in contours_yellow: for cnt_yellow in contours_yellow:
area = cv2.contourArea(cnt_yellow) area = cv2.contourArea(cnt_yellow)
if area <= 50: if area <= 15:
continue continue
perimeter = cv2.arcLength(cnt_yellow, True) perimeter = cv2.arcLength(cnt_yellow, True)
if perimeter <= 0: if perimeter <= 0:
continue continue
circularity = (4 * np.pi * area) / (perimeter * perimeter) circularity = (4 * np.pi * area) / (perimeter * perimeter)
if circularity <= 0.7: if circularity <= 0.5:
continue continue
print(f"[target] -> 面积:{area:.1f}, 圆度:{circularity:.2f}") print(f"[target] -> 面积:{area:.1f}, 圆度:{circularity:.2f}")
if len(cnt_yellow) >= 5: if len(cnt_yellow) >= 5:

View File

@@ -18,4 +18,5 @@
# 2.15.5 打印ota进度 # 2.15.5 打印ota进度
# 2.15.6 更新版本号 # 2.15.6 更新版本号
# 2.15.7 更新版本号 # 2.15.7 更新版本号
# 2.15.8 启动不加载预加载yolo # 2.15.8 启动不加载预加载yolo
# 2.15.9 20cm

View File

@@ -4,6 +4,6 @@
应用版本号 应用版本号
每次 OTA 更新时,只需要更新这个文件中的版本号 每次 OTA 更新时,只需要更新这个文件中的版本号
""" """
VERSION = '2.15.7' VERSION = '2.15.9'

View File

@@ -535,7 +535,7 @@ def detect_circle_v3(frame, laser_point=None, img_cv=None):
logger.debug(f"[detect_circle_v3] begin {datetime.now()}") logger.debug(f"[detect_circle_v3] begin {datetime.now()}")
# -- 1. 缩图加速(与三角形路径保持一致) # -- 1. 缩图加速(与三角形路径保持一致)
h_orig, w_orig = img_cv.shape[:2] h_orig, w_orig = img_cv.shape[:2]
MAX_DET_DIM = 320 MAX_DET_DIM = 480
long_side = max(h_orig, w_orig) long_side = max(h_orig, w_orig)
if long_side > MAX_DET_DIM: if long_side > MAX_DET_DIM:
det_scale = MAX_DET_DIM / long_side det_scale = MAX_DET_DIM / long_side
@@ -580,10 +580,10 @@ def detect_circle_v3(frame, laser_point=None, img_cv=None):
red_candidates = [] red_candidates = []
for cnt_r in contours_red: for cnt_r in contours_red:
ar = cv2.contourArea(cnt_r) ar = cv2.contourArea(cnt_r)
if ar <= 30: if ar <= 10:
continue continue
pr = cv2.arcLength(cnt_r, True) pr = cv2.arcLength(cnt_r, True)
if pr <= 0 or (4 * np.pi * ar) / (pr * pr) <= 0.4: if pr <= 0 or (4 * np.pi * ar) / (pr * pr) <= 0.3:
continue continue
if len(cnt_r) >= 5: if len(cnt_r) >= 5:
(xr, yr), (wr, hr), _ = cv2.fitEllipse(cnt_r) (xr, yr), (wr, hr), _ = cv2.fitEllipse(cnt_r)
@@ -599,13 +599,13 @@ def detect_circle_v3(frame, laser_point=None, img_cv=None):
valid_targets = [] valid_targets = []
for cnt_yellow in contours_yellow: for cnt_yellow in contours_yellow:
area = cv2.contourArea(cnt_yellow) area = cv2.contourArea(cnt_yellow)
if area <= 50: if area <= 15:
continue continue
perimeter = cv2.arcLength(cnt_yellow, True) perimeter = cv2.arcLength(cnt_yellow, True)
if perimeter <= 0: if perimeter <= 0:
continue continue
circularity = (4 * np.pi * area) / (perimeter * perimeter) circularity = (4 * np.pi * area) / (perimeter * perimeter)
if circularity <= 0.7: if circularity <= 0.5:
continue continue
if logger: if logger:
logger.info(f"[target] -> 面积:{area:.1f}, 圆度:{circularity:.2f}") logger.info(f"[target] -> 面积:{area:.1f}, 圆度:{circularity:.2f}")