13#include <peak_common_c/detail/peak_common_defines.h>
20#include <peak_icv_c/algorithms/calibration/peak_icv_camera_calibration.h>
120 PEAK_COMMON_NO_DISCARD std::vector<CalibrationView>
GetViews()
const;
154 friend peak::common::detail::BackendAccessor<CalibrationResult>;
157 explicit CalibrationResult(peak_icv_calibration_result_handle calibrationResultHandle);
161 peak_icv_calibration_result_handle m_calibrationResultHandle{};
164inline CalibrationResult::CalibrationResult()
167 return PEAK_ICV_C_ABI_PREFIX peak_icv_Calibration_Result_Create(&m_calibrationResultHandle);
173 return m_calibrationResultHandle;
178 return &m_calibrationResultHandle;
181inline CalibrationResult::CalibrationResult(peak_icv_calibration_result_handle calibrationResultHandle)
182 : m_calibrationResultHandle{ calibrationResultHandle }
188 return PEAK_ICV_C_ABI_PREFIX peak_icv_Calibration_Result_IncreaseUseCount(other.m_calibrationResultHandle);
190 m_calibrationResultHandle = other.m_calibrationResultHandle;
195 m_calibrationResultHandle = other.m_calibrationResultHandle;
196 other.m_calibrationResultHandle =
nullptr;
201 if (m_calibrationResultHandle != other.m_calibrationResultHandle)
203 if (m_calibrationResultHandle !=
nullptr)
206 return PEAK_ICV_C_ABI_PREFIX peak_icv_Calibration_Result_Destroy(m_calibrationResultHandle);
211 return PEAK_ICV_C_ABI_PREFIX peak_icv_Calibration_Result_IncreaseUseCount(other.m_calibrationResultHandle);
213 m_calibrationResultHandle = other.m_calibrationResultHandle;
221 if (m_calibrationResultHandle != other.m_calibrationResultHandle)
223 if (m_calibrationResultHandle !=
nullptr)
226 return PEAK_ICV_C_ABI_PREFIX peak_icv_Calibration_Result_Destroy(m_calibrationResultHandle);
230 m_calibrationResultHandle = other.m_calibrationResultHandle;
231 other.m_calibrationResultHandle =
nullptr;
239 if (m_calibrationResultHandle !=
nullptr)
241 std::ignore = PEAK_ICV_C_ABI_PREFIX peak_icv_Calibration_Result_Destroy(m_calibrationResultHandle);
245inline CalibrationResult::CalibrationResult(
const std::string& filePath)
248 return PEAK_ICV_C_ABI_PREFIX peak_icv_Calibration_Result_CreateFromFile(&m_calibrationResultHandle, filePath.c_str());
254 double meanReprojectionError{};
257 return PEAK_ICV_C_ABI_PREFIX peak_icv_Calibration_Result_GetMeanReprojectionError(
258 m_calibrationResultHandle, &meanReprojectionError);
260 return meanReprojectionError;
267 return PEAK_ICV_C_ABI_PREFIX peak_icv_Calibration_Result_GetCalibrationViews_GetCount(m_calibrationResultHandle, &numViews);
275 std::vector<peak_icv_calibration_view_handle> viewHandles(numViews);
277 return PEAK_ICV_C_ABI_PREFIX peak_icv_Calibration_View_Array_Create(viewHandles.data(), viewHandles.size());
283 return PEAK_ICV_C_ABI_PREFIX peak_icv_Calibration_Result_GetCalibrationViews(
284 m_calibrationResultHandle, viewHandles.data(), viewHandles.size());
286 return peak::common::detail::BackendAccessor<CalibrationView>::CreateInstances(viewHandles);
288 catch (
const std::exception&)
290 std::ignore = PEAK_ICV_C_ABI_PREFIX peak_icv_Calibration_View_Array_Destroy(viewHandles.data(), viewHandles.size());
297 peak_icv_calibration_parameters calibrationParameters{};
300 return PEAK_ICV_C_ABI_PREFIX peak_icv_Calibration_Result_ToParameters(
301 m_calibrationResultHandle, &calibrationParameters,
sizeof(peak_icv_calibration_parameters));
309 return GetCalibrationParameters();
Holds a complete set of camera calibration parameters, including both intrinsic and extrinsic data.
Holds the results of a camera calibration.
~CalibrationResult() override
double GetMeanReprojectionError() const
Retrieves the mean reprojection error from the calibration result.
CalibrationResult & operator=(const CalibrationResult &other)
std::vector< CalibrationView > GetViews() const
Returns a vector of CalibrationView objects.
CalibrationParameters GetCalibrationParameters() const
Extracts the calibration parameters from a calibration result.
void ExecuteAndMapReturnCodes(const CallableType &callableObject)
peak::common::detail::c_type_of_t< Type > * handle_of_t