IDS peak ICV v1.1.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 auto result = peak::common::detail::BackendAccessor<CalibrationResult>::CreateInstance();
98
99 std::vector<peak_icv_image_handle> imageHandles;
100 imageHandles.reserve(images.size());
101 std::transform(images.begin(), images.end(), std::back_inserter(imageHandles), [](const auto& image) {
102 return peak::common::detail::BackendAccessor<Image>::BackendHandle(image);
103 });
105 return PEAK_ICV_C_ABI_PREFIX peak_icv_Calibration_Process(
106 peak::common::detail::BackendAccessor<CalibrationPlate>::BackendHandle(m_calibrationPlate), imageHandles.data(),
107 imageHandles.size(), peak::common::detail::BackendAccessor<CalibrationResult>::BackendHandleAddress(result));
108 });
109
110 return result;
111}
112
113} /* namespace icv */
114} /* 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.
void ExecuteAndMapReturnCodes(const CallableType &callableObject)