added print_angle
This commit is contained in:
@@ -7,7 +7,7 @@ import argparse
|
|||||||
import mimetypes
|
import mimetypes
|
||||||
import json
|
import json
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from ar_tag_pose.utils import to_tf, to_euler
|
from ar_tag_pose.utils import to_tf, to_euler, draw_text
|
||||||
from detector_board import BoardDetector
|
from detector_board import BoardDetector
|
||||||
from detector_board_aruco import BoardDetectorAruco
|
from detector_board_aruco import BoardDetectorAruco
|
||||||
from detector_board_charuco import BoardDetectorCharuco
|
from detector_board_charuco import BoardDetectorCharuco
|
||||||
@@ -57,6 +57,13 @@ class Detector(abc.ABC):
|
|||||||
cap.set(cv.CAP_PROP_EXPOSURE, 30)
|
cap.set(cv.CAP_PROP_EXPOSURE, 30)
|
||||||
cap.set(cv.CAP_PROP_AUTO_EXPOSURE, 1)
|
cap.set(cv.CAP_PROP_AUTO_EXPOSURE, 1)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def print_angle(img: np.ndarray, title: str, angle: np.array, org: tuple[int, int]):
|
||||||
|
size = draw_text(img, f"{title}:", org, color=(128, 128, 128))
|
||||||
|
size = draw_text(img, f"X: {angle[0]:.1f}", (size[0] + 10, org[1]), color=(64, 64, 255))
|
||||||
|
size = draw_text(img, f"Y: {angle[0]:.1f}", (size[0] + 10, org[1]), color=(64, 255, 64))
|
||||||
|
draw_text(img, f"Z: {angle[0]:.1f}", (size[0] + 10, org[1]), color=(255, 64, 64))
|
||||||
|
|
||||||
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:
|
||||||
image = det.get_board_image(margin_length)
|
image = det.get_board_image(margin_length)
|
||||||
@@ -156,8 +163,7 @@ class Detector(abc.ABC):
|
|||||||
if success:
|
if success:
|
||||||
rot_e = to_euler(to_tf(r_vec, t_vec), axis_order="XYZ")
|
rot_e = to_euler(to_tf(r_vec, t_vec), axis_order="XYZ")
|
||||||
rot = [round(180.0 / math.pi * v, 1) for v in rot_e]
|
rot = [round(180.0 / math.pi * v, 1) for v in rot_e]
|
||||||
cv.putText(img, f"{det}: Tilt: {rot[0]:.1f}, Roll: {rot[1]:.1f}, Azimuth: {rot[2]:.1f}",
|
self.print_angle(img, str(det), rot, (30, y_pos))
|
||||||
(30, y_pos), cv.FONT_HERSHEY_SIMPLEX, 0.75, (0, 255, 0), 2)
|
|
||||||
y_pos += 30
|
y_pos += 30
|
||||||
|
|
||||||
img_scaled = cv.resize(img, dsize=None, fx=0.5, fy=0.5)
|
img_scaled = cv.resize(img, dsize=None, fx=0.5, fy=0.5)
|
||||||
|
|||||||
@@ -42,3 +42,10 @@ def to_euler(t1: np.ndarray, t2: np.ndarray | None = None, axis_order: str= "XYZ
|
|||||||
|
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
def draw_text(img: np.ndarray, text: str, org: tuple[int,int], 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,
|
||||||
|
bottom_left_origin: bool=False):
|
||||||
|
|
||||||
|
size = cv.getTextSize(text, font, font_scale, thickness)
|
||||||
|
cv.putText(img, text, org, font, font_scale, color, thickness, line_type, bottom_left_origin)
|
||||||
|
return size[0][0] + org[0], size[0][1]
|
||||||
|
|||||||
Reference in New Issue
Block a user