Newer
Older
def __init__(self, center_points_mm: np.ndarray, dimensions_mm: np.ndarray, frame_id: str = 'object',
resolution_mm: np.ndarray = np.array([0.1, 0.1, 0.1])):
self.center_points_mm = center_points_mm
self.dimensions_mm = dimensions_mm
return cls((np.random.random((3, )) - 0.5) * 20.,
(np.random.random((3, )) - 0.5) * 10.)
center_points_mm = list()
dimensions_mm = list()
for roi in msg.region_of_intrest_stack.markers:
roi: Marker
center_points_mm.append(
np.array([roi.pose.position.x,
roi.pose.position.y,
roi.pose.position.z]))
dimensions_mm.append(
np.array([roi.scale.x,
roi.scale.y,
roi.scale.z]))
frame = roi.header.frame_id
resolution_mm = np.array([msg.resolution.x,
msg.resolution.y,
msg.resolution.z])
return cls(np.array(center_points_mm), np.array(dimensions_mm), frame, resolution_mm)
@property
def number_of_rois(self) -> int:
return self.center_points_mm.shape[0]
def as_message(self) -> RegionOfIntrest:
message = RegionOfIntrest()
for i in range(self.number_of_rois):
roi = Marker()
roi.pose.position.x = self.center_points_mm[i][0]
roi.pose.position.y = self.center_points_mm[i][1]
roi.pose.position.z = self.center_points_mm[i][2]
roi.scale.x = self.dimensions_mm[i][0]
roi.scale.y = self.dimensions_mm[i][1]
roi.scale.z = self.dimensions_mm[i][2]
roi.header.frame_id = self.frame_id
message.resolution.x = self.resolution_mm[0]
message.resolution.x = self.resolution_mm[1]
message.resolution.x = self.resolution_mm[2]