fixed scale

This commit is contained in:
2025-12-05 18:21:36 +01:00
parent 48f7e30a0c
commit 8ab402f68f
2 changed files with 10 additions and 10 deletions
+7 -7
View File
@@ -85,12 +85,12 @@ class Detector(abc.ABC):
self.params_save() self.params_save()
@staticmethod @staticmethod
def print_angle(img: np.ndarray, title: str, angle: np.array, org: tuple[int, int], rot_order: str = 'XYZ'): def print_angle(img: np.ndarray, title: str, angle: np.array, org: tuple[int, int], rot_order: str = 'XYZ', scale: float = 1.0):
indices = {k: n for n, k in enumerate(rot_order)} indices = {k: n for n, k in enumerate(rot_order)}
colors = [(64, 64, 255), (64, 255, 64), (255, 64, 64)] colors = [(64, 64, 255), (64, 255, 64), (255, 64, 64)]
size = draw_text(img, f"{title}:", org, color=(128, 128, 128)) size = draw_text(img, f"{title}:", org, scale, color=(128, 128, 128))
for axis, color in zip(list("XYZ"), colors): for axis, color in zip(list("XYZ"), colors):
size = draw_text(img, f"{axis}: {angle[indices[axis]]:.1f}", (size[0] + 10, org[1]), color=color) size = draw_text(img, f"{axis}: {angle[indices[axis]]:.1f}", (size[0] + int(10*scale), org[1]), scale, color=color)
def board_image_generate(self, margin_length: int=0): def board_image_generate(self, margin_length: int=0):
for det in self.detector: for det in self.detector:
@@ -177,22 +177,22 @@ class Detector(abc.ABC):
elif k == ord('f'): elif k == ord('f'):
pose_center = not pose_center pose_center = not pose_center
k = 720 / img.shape[1] k = 800 / img.shape[1]
img_scaled = cv.resize(img, dsize=None, fx=k, fy=k)
y_pos = 30 y_pos = 30
for det in self.detector: for det in self.detector:
success, r_vec, t_vec = det.process(img, True, False, False, pose_center) success, r_vec, t_vec = det.process(img, True, False, False, pose_center)
if success: if success:
if len(self.rotation_order) == 3: if len(self.rotation_order) == 3:
rot = to_euler(to_tf(r_vec, t_vec), rotation_order=self.rotation_order) rot = to_euler(to_tf(r_vec, t_vec), rotation_order=self.rotation_order)
self.print_angle(img_scaled, f"{str(det)}-{self.rotation_order}", rot, (30, y_pos), self.rotation_order) self.print_angle(img, f"{str(det)}-{self.rotation_order}", rot, (30, int(y_pos/k)), self.rotation_order, 1./k)
y_pos += 30 y_pos += 30
else: else:
for rotation_order in ['XYZ', 'XZY', 'YXZ', 'YZX', 'ZXY', 'ZYX']: for rotation_order in ['XYZ', 'XZY', 'YXZ', 'YZX', 'ZXY', 'ZYX']:
rot = to_euler(to_tf(r_vec, t_vec), rotation_order=rotation_order) rot = to_euler(to_tf(r_vec, t_vec), rotation_order=rotation_order)
self.print_angle(img_scaled, f"{str(det)}-{rotation_order}", rot, (30, y_pos), rotation_order) self.print_angle(img,f"{str(det)}-{rotation_order}", rot, (30, int(y_pos/k)), rotation_order, 1./k)
y_pos += 30 y_pos += 30
img_scaled = cv.resize(img, dsize=None, fx=k, fy=k)
cv.imshow('img', img_scaled) cv.imshow('img', img_scaled)
if self.out_file is not None: if self.out_file is not None:
out = out_writer(out, img_scaled, filename=self.out_file) out = out_writer(out, img_scaled, filename=self.out_file)
+3 -3
View File
@@ -42,10 +42,10 @@ def to_euler(t1: np.ndarray, t2: np.ndarray | None = None, rotation_order: str=
return res return res
def draw_text(img: np.ndarray, text: str, org: tuple[int,int], font: int=cv.FONT_HERSHEY_SIMPLEX, def draw_text(img: np.ndarray, text: str, org: tuple[int,int], scale = 1.0, font: int=cv.FONT_HERSHEY_SIMPLEX,
font_scale: float=0.75, color: tuple[float,float,float]=(0, 255, 0), thickness: int=2, line_type: int=0, font_scale: float=0.75, color: tuple[float,float,float]=(0, 255, 0), thickness: int=2, line_type: int=0,
bottom_left_origin: bool=False): bottom_left_origin: bool=False):
size = cv.getTextSize(text, font, font_scale, thickness) size = cv.getTextSize(text, font, font_scale*scale, int(thickness*scale))
cv.putText(img, text, org, font, font_scale, color, thickness, line_type, bottom_left_origin) cv.putText(img, text, org, font, font_scale*scale, color, int(thickness*scale), line_type, bottom_left_origin)
return size[0][0] + org[0], size[0][1] return size[0][0] + org[0], size[0][1]