IDS peak ICV v1.2.0
Loading...
Searching...
No Matches
peak_icv_camera_calibration.hpp
Go to the documentation of this file.
1
11#pragma once
12
13#include <peak_common_c/detail/peak_common_defines.h>
18#include <peak_icv_c/algorithms/calibration/peak_icv_camera_calibration.h>
19#include <algorithm>
20#include <utility>
21
22namespace peak
23{
24namespace icv
25{
26
45{
46public:
54 explicit CameraCalibration(CalibrationPlate calibrationPlate);
55
85 PEAK_COMMON_NO_DISCARD CalibrationResult Process(const std::vector<Image>& images) const;
86
87private:
88 CalibrationPlate m_calibrationPlate;
89};
90
92 : m_calibrationPlate{ std::move(calibrationPlate) }
93{}
94
95inline CalibrationResult CameraCalibration::Process(const std::vector<Image>& images) const
96{
97 if (images.size() == 0)
98 {
99 throw NotPossibleException("Number of input images has to be greater than 0.");
100 }
101
102 auto result = peak::common::detail::BackendAccessor<CalibrationResult>::CreateInstance();
103
104 std::vector<peak_icv_image_handle> imageHandles;
105 imageHandles.reserve(images.size());
106 std::transform(images.begin(), images.end(), std::back_inserter(imageHandles), [](const auto& image) {
107 return peak::common::detail::BackendAccessor<Image>::BackendHandle(image);
108 });
110 return PEAK_ICV_C_ABI_PREFIX peak_icv_Calibration_Process(
111 peak::common::detail::BackendAccessor<CalibrationPlate>::BackendHandle(m_calibrationPlate), imageHandles.data(),
112 imageHandles.size(), peak::common::detail::BackendAccessor<CalibrationResult>::BackendHandleAddress(result));
113 });
114
115 return result;
116}
117
118} /* namespace icv */
119} /* namespace peak */
Calibration plate representation holding the world coordinates of the reference points on a calibrati...
Holds the results of a camera calibration.
Camera calibration representation holding the logic to compute intrinsic and extrinsic parameters.
CalibrationResult Process(const std::vector< Image > &images) const
Calculates intrinsic and extrinsic parameters.
CameraCalibration(CalibrationPlate calibrationPlate)
Constructs a CameraCalibration with the given calibration plate.
Thrown when an operation cannot be performed due to logical constraints.
void ExecuteAndMapReturnCodes(const CallableType &callableObject)