IDS peak ICV v1.0.0
Loading...
Searching...
No Matches
peak_icv_camera_calibration.hpp
Go to the documentation of this file.
1
11#pragma once
12
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{
26namespace experimental
27{
28
38{
39public:
47 explicit CameraCalibration(CalibrationPlate calibrationPlate);
48
64 PEAK_ICV_NO_DISCARD CalibrationResult Process(const std::vector<Image>& images) const;
65
66private:
67 CalibrationPlate m_calibrationPlate;
68};
69
71 : m_calibrationPlate{ std::move(calibrationPlate) }
72{}
73
74inline CalibrationResult CameraCalibration::Process(const std::vector<Image>& images) const
75{
76 auto result = peak::common::detail::BackendAccessor<CalibrationResult>::CreateInstance();
77
78 std::vector<peak_icv_image_handle> imageHandles;
79 imageHandles.reserve(images.size());
80 std::transform(images.begin(), images.end(), std::back_inserter(imageHandles), [](const auto& image) {
81 return peak::common::detail::BackendAccessor<Image>::BackendHandle(image);
82 });
84 return PEAK_ICV_C_ABI_PREFIX peak_icv_Calibration_Process(
85 peak::common::detail::BackendAccessor<CalibrationPlate>::BackendHandle(m_calibrationPlate), imageHandles.data(),
86 imageHandles.size(), peak::common::detail::BackendAccessor<CalibrationResult>::BackendHandleAddress(result));
87 });
88
89 return result;
90}
91
92} /* namespace experimental */
93} /* namespace icv */
94} /* namespace peak */
Calibration plate representation holding the world coordinates of the reference points on a calibrati...
Class for holding the results of a camera calibration.
CalibrationResult Process(const std::vector< Image > &images) const
Applies the camera calibration and calculates the intrinsic and extrinsic parameters based on several...
CameraCalibration(CalibrationPlate calibrationPlate)
Creates an instance of class CameraCalibration.
void ExecuteAndMapReturnCodes(const CallableType &callableObject)