13#include <peak_common_c/detail/peak_common_defines.h>
21#include <peak_icv_c/algorithms/calibration/peak_icv_calibration_view.h>
147 friend peak::common::detail::BackendAccessor<CalibrationView>;
150 explicit CalibrationView(peak_icv_calibration_view_handle calibrationViewHandle);
154 peak_icv_calibration_view_handle m_calibrationViewHandle{};
157inline CalibrationView::CalibrationView()
160 return PEAK_ICV_C_ABI_PREFIX peak_icv_Calibration_View_Create(&m_calibrationViewHandle);
164inline CalibrationView::CalibrationView(peak_icv_calibration_view_handle calibrationViewHandle)
165 : m_calibrationViewHandle(calibrationViewHandle)
170 if (m_calibrationViewHandle !=
nullptr)
172 std::ignore = PEAK_ICV_C_ABI_PREFIX peak_icv_Calibration_View_Destroy(m_calibrationViewHandle);
179 return PEAK_ICV_C_ABI_PREFIX peak_icv_Calibration_View_IncreaseUseCount(other.m_calibrationViewHandle);
181 m_calibrationViewHandle = other.m_calibrationViewHandle;
185 : m_calibrationViewHandle(other.m_calibrationViewHandle)
187 other.m_calibrationViewHandle =
nullptr;
197 if (m_calibrationViewHandle !=
nullptr)
200 return PEAK_ICV_C_ABI_PREFIX peak_icv_Calibration_View_Destroy(m_calibrationViewHandle);
205 return PEAK_ICV_C_ABI_PREFIX peak_icv_Calibration_View_IncreaseUseCount(other.m_calibrationViewHandle);
207 m_calibrationViewHandle = other.m_calibrationViewHandle;
218 if (m_calibrationViewHandle !=
nullptr)
221 return PEAK_ICV_C_ABI_PREFIX peak_icv_Calibration_View_Destroy(m_calibrationViewHandle);
225 m_calibrationViewHandle = other.m_calibrationViewHandle;
226 other.m_calibrationViewHandle =
nullptr;
232 return m_calibrationViewHandle;
237 return &m_calibrationViewHandle;
242 size_t reprojectionErrorsCount{};
244 return PEAK_ICV_C_ABI_PREFIX peak_icv_Calibration_View_GetReprojectionErrors_GetCount(
245 m_calibrationViewHandle, &reprojectionErrorsCount);
248 if (reprojectionErrorsCount == 0)
253 std::vector<peak_icv_reprojection_error> cReprojectionErrors(reprojectionErrorsCount);
256 return PEAK_ICV_C_ABI_PREFIX peak_icv_Calibration_View_GetReprojectionErrors(
257 m_calibrationViewHandle, cReprojectionErrors.data(), reprojectionErrorsCount);
260 std::vector<ReprojectionError> reprojectionErrors;
261 reprojectionErrors.reserve(reprojectionErrorsCount);
263 std::transform(cReprojectionErrors.begin(), cReprojectionErrors.end(), std::back_inserter(reprojectionErrors),
265 return reprojectionError;
268 return reprojectionErrors;
273 peak_icv_extrinsic_parameters extrinsicParameters{};
275 return PEAK_ICV_C_ABI_PREFIX peak_icv_Calibration_View_GetExtrinsicParameters(
276 m_calibrationViewHandle, &extrinsicParameters,
sizeof(extrinsicParameters));
278 return peak::common::detail::BackendAccessor<ExtrinsicParameters>::CreateInstance(extrinsicParameters);
284 auto* polygonHandle = peak::common::detail::BackendAccessor<PolygonF>::BackendHandle(polygonF);
287 return PEAK_ICV_C_ABI_PREFIX peak_icv_Calibration_View_GetConvexHull(m_calibrationViewHandle, &polygonHandle);
290 return peak::common::detail::BackendAccessor<PolygonF>::CreateInstance(polygonHandle);
295 peak_icv_coordinate_system coordinateSystem{};
297 return PEAK_ICV_C_ABI_PREFIX peak_icv_Calibration_View_GetCoordinateSystem(m_calibrationViewHandle, &coordinateSystem);
300 return peak::common::detail::BackendAccessor<CoordinateSystem>::CreateInstance(coordinateSystem);
Represents a single observation of a calibration plate in an image.
std::vector< ReprojectionError > GetReprojectionErrors() const
Provides the reprojection errors for every marker in the view.
CoordinateSystem GetCoordinateSystem() const
Provides the calibration plate coordinate system projected into the image.
~CalibrationView() override
ExtrinsicParameters GetExtrinsicParameters() const
Provides the extrinsic parameters for the view.
PolygonF GetConvexHull() const
Provides the convex hull of the found calibration plate in the view.
CalibrationView & operator=(const CalibrationView &other)
Represents the coordinate system of a calibration view projected into the image plane....
This class stores and provides access to the extrinsic parameters, which include the translation,...
Represents the reprojection error for a marker point in the image.
A polygon is a two-dimensional geometric shape that is made up of a finite number of straight line se...
void ExecuteAndMapReturnCodes(const CallableType &callableObject)
peak::common::detail::c_type_of_t< Type > * handle_of_t