54 private readonly Handle _handle;
55 private readonly Backend.Types.peak_icv_intrinsic_parameters _newIntrinsicParameters;
66 var handle =
new Handle(intrinsicParameters, out _newIntrinsicParameters);
82 Backend.Types.peak_icv_capture_information captureInformation = CaptureInformation.FromMetadata(metadata);
83 var handle =
new Handle(intrinsicParameters, captureInformation, out _newIntrinsicParameters);
96 var handle =
new Handle(calibrationParameters, out _newIntrinsicParameters);
112 Backend.Types.peak_icv_capture_information captureInformation = CaptureInformation.FromMetadata(metadata);
113 var handle =
new Handle(calibrationParameters, captureInformation, out _newIntrinsicParameters);
126 DllHelper.ExecuteAndMapReturnCodes(() =>
127 CInterface.peak_icv_Transform_Undistortion_GetInterpolation(_handle, out interpolation));
128 return interpolation;
133 DllHelper.ExecuteAndMapReturnCodes(() =>
134 CInterface.peak_icv_Transform_Undistortion_SetInterpolation(_handle, value));
145 GC.SuppressFinalize(
this);
185 DllHelper.ExecuteAndMapReturnCodes(() =>
186 CInterface.peak_icv_Transform_Undistortion_Process(_handle, image._handle, outputImage._handle));
191 private sealed class Handle : SafeHandleZeroOrMinusOneIsInvalid
194 out Backend.Types.peak_icv_intrinsic_parameters newIntrinsicParameters) : base(true)
196 Backend.Types.peak_icv_intrinsic_parameters tmp =
default;
198 DllHelper.ExecuteAndMapReturnCodes(() =>
199 CInterface.peak_icv_Transform_Undistortion_Create(
201 intrinsicParameters.ToCType(),
205 newIntrinsicParameters = tmp;
209 Backend.Types.peak_icv_capture_information captureInformation,
210 out Backend.Types.peak_icv_intrinsic_parameters newIntrinsicParameters) : base(true)
212 Backend.Types.peak_icv_intrinsic_parameters tmp =
default;
214 DllHelper.ExecuteAndMapReturnCodes(() =>
215 CInterface.peak_icv_Transform_Undistortion_Create_With_Image_CaptureInformation(
217 intrinsicParameters.ToCType(),
220 (nuint) Marshal.SizeOf(typeof(Backend.Types.peak_icv_capture_information)),
223 newIntrinsicParameters = tmp;
227 out Backend.Types.peak_icv_intrinsic_parameters newIntrinsicParameters) : base(true)
229 Backend.Types.peak_icv_intrinsic_parameters tmp =
default;
231 DllHelper.ExecuteAndMapReturnCodes(() =>
232 CInterface.peak_icv_Transform_Undistortion_Create(
238 newIntrinsicParameters = tmp;
242 Backend.Types.peak_icv_capture_information captureInformation,
243 out Backend.Types.peak_icv_intrinsic_parameters newIntrinsicParameters) : base(true)
245 Backend.Types.peak_icv_intrinsic_parameters tmp =
default;
247 DllHelper.ExecuteAndMapReturnCodes(() =>
248 CInterface.peak_icv_Transform_Undistortion_Create_With_Image_CaptureInformation(
253 (nuint) Marshal.SizeOf(typeof(Backend.Types.peak_icv_capture_information)),
256 newIntrinsicParameters = tmp;
259 protected override bool ReleaseHandle()
261 return CInterface.peak_icv_Transform_Undistortion_Destroy(handle) ==
262 Backend.Types.peak_icv_status.PEAK_ICV_STATUS_SUCCESS;
266 private static class CInterface
268 [DllImport(Global.LibraryName, CallingConvention = CallingConvention.Cdecl)]
269 public static extern Backend.Types.peak_icv_status peak_icv_Transform_Undistortion_Create(
270 out IntPtr undistortionHandle,
271 Backend.Types.peak_icv_intrinsic_parameters intrinsicParameters,
272 nuint sizeOfIntrinsicParameters,
273 out Backend.Types.peak_icv_intrinsic_parameters newIntrinsicParameters);
275 [DllImport(Global.LibraryName, CallingConvention = CallingConvention.Cdecl)]
276 public static extern Backend.Types.peak_icv_status
277 peak_icv_Transform_Undistortion_Create_With_Image_CaptureInformation(
278 out IntPtr undistortionHandle,
279 Backend.Types.peak_icv_intrinsic_parameters intrinsicParameters,
280 nuint sizeOfIntrinsicParameters,
281 Backend.Types.peak_icv_capture_information captureInformation,
282 nuint captureInformationSize,
283 out Backend.Types.peak_icv_intrinsic_parameters newIntrinsicParameters);
285 [DllImport(Global.LibraryName, CallingConvention = CallingConvention.Cdecl)]
286 public static extern Backend.Types.peak_icv_status
287 peak_icv_Transform_Undistortion_IncreaseUseCount(
288 Handle undistortionHandle);
290 [DllImport(Global.LibraryName, CallingConvention = CallingConvention.Cdecl)]
291 public static extern Backend.Types.peak_icv_status peak_icv_Transform_Undistortion_Destroy(
292 IntPtr undistortionHandle);
294 [DllImport(Global.LibraryName, CallingConvention = CallingConvention.Cdecl)]
295 public static extern Backend.Types.peak_icv_status peak_icv_Transform_Undistortion_Process(
296 Handle undistortionHandle,
297 Image.Handle inputImageHandle,
298 Image.Handle outputImageHandle);
300 [DllImport(Global.LibraryName, CallingConvention = CallingConvention.Cdecl)]
301 public static extern Backend.Types.peak_icv_status
302 peak_icv_Transform_Undistortion_GetInterpolation(
303 Handle undistortionHandle,
306 [DllImport(Global.LibraryName, CallingConvention = CallingConvention.Cdecl)]
307 public static extern Backend.Types.peak_icv_status
308 peak_icv_Transform_Undistortion_SetInterpolation(
309 Handle undistortionHandle,