CVB++ 15.0
c_img.h
1#pragma once
2
3#if defined __GNUC__ && !defined CVB_SHOW_WARNINGS
4# pragma GCC system_header
5#endif // __GNUC__
6
7#include <cstddef>
8#include <cstdint>
9#include <utility>
10#include <string>
11
12#include "../namespace.hpp"
13
14#include "c_error.h"
15
16// macro for import definition
17// (ensures proper calling convention on windows platforms)
18#if defined _WIN32
19 #if !defined __cplusplus
20 #error CVB: Compiler must be used in C++ mode!
21 #endif
22 #define IMPORT(t) extern "C" t __stdcall
23 #define IMPORT_C(t) t __stdcall
24 #define CVB_API WINAPI
25#elif defined __linux__
26 #define IMPORT(t) extern "C" __attribute__((visibility("default"))) t
27 #define IMPORT_C(t) __attribute__((visibility("default"))) t
28 #define __stdcall // NOLINT
29 #define CVB_API
30#else
31 #error CVB: Unsupported platform
32#endif
33
34namespace Cvb
35{
36
37
38CVB_BEGIN_INLINE_NS
39
40namespace CExports
41{
42
43
44
45
46
47#if defined _WIN32
48
49 typedef int cvbbool_t;
50 typedef long cvbdatatype_t;
51 typedef long cvbdensity_t;
52 typedef long cvbdim_t;
53 typedef long cvbres_t;
54 typedef long cvbval_t;
55 typedef long cvblicres_t;
56 typedef unsigned char cvbuint8_t;
57 typedef short cvbint16_t;
58 typedef unsigned short cvbuint16_t;
59 typedef long cvbint32_t;
60 typedef unsigned long cvbuint32_t;
61 typedef __int64 cvbint64_t;
62 typedef unsigned __int64 cvbuint64_t;
63
64#define CVB_CAPI_CALL_NAME __FUNCTION__ // possible alternative __FUNCSIG__
65
66#elif defined __linux__
67
68 typedef bool cvbbool_t;
69 typedef int32_t cvbdatatype_t;
70 typedef int32_t cvbdensity_t;
71 typedef int32_t cvbdim_t;
72 typedef int32_t cvbres_t;
73 typedef int32_t cvbval_t;
74 typedef std::int32_t cvblicres_t;
75 typedef std::uint8_t cvbuint8_t;
76 typedef std::int8_t cvbint8_t;
77 typedef std::uint16_t cvbuint16_t;
78 typedef std::int16_t cvbint16_t;
79 typedef int32_t cvbint32_t;
80 typedef std::uint32_t cvbuint32_t;
81 typedef std::int64_t cvbint64_t;
82 typedef uint64_t cvbuint64_t;
83
84#define CVB_CAPI_CALL_NAME __FUNCTION__ //__PRETTY_FUNCTION__
85
86#else
87#error CVB: Unsupported platform and/or compiler!
88#endif
89
90#define CVB_C_API_ERROR_MESSAGE(FUNCTION, CODE) \
91 std::string("C-API call failed; try getting a log by using CVB LogGUI/silogutil: ") + \
92 std::string("{\"Name\": \"") + (FUNCTION) + \
93 std::string("\", \"CVC_ERROR_CODE\": ") + std::to_string(CODE) + std::string("}")
94
95IMPORT(void) ReportCVBErrorEx(cvbres_t ErrorCode, const char *szCustomString, const char *szContext);
96
97#define CVB_DEF_CAPI_X(RET, NAME, SIG) \
98 IMPORT(RET) NAME SIG; \
99 template <class... ARGS> \
100 inline RET _pp##NAME(ARGS &&...args) noexcept \
101 { \
102 auto res = NAME(std::forward<ARGS>(args)...); \
103 if (!CheckErrorCode(res)) \
104 { \
105 std::string functionName = std::begin(CVB_CAPI_CALL_NAME);\
106 functionName.erase(0, functionName.find("_pp") + 3); \
107 using RET_TYPE = decltype(res); \
108 ReportError<RET_TYPE>(res, functionName); \
109 } \
110 return res; \
111 }
112
113#define CVB_DEF_CAPI_XC(RET, NAME, SIG) \
114IMPORT_C(RET) NAME SIG; \
115template <class... ARGS> \
116inline RET _pp ## NAME(ARGS&&... args) noexcept\
117{\
118 auto res = NAME(std::forward<ARGS>(args)...); \
119 if(!CheckErrorCode(res)) \
120 {\
121 std::string functionName = CVB_CAPI_CALL_NAME; \
122 functionName.erase(0, functionName.find("_pp") + 3); \
123 ReportCVBErrorEx(MakeErrorCode(res), "C-API call failed", functionName.c_str()); \
124 }\
125 return res; \
126}
127
128#define CVB_DEF_CAPI(RET, NAME, SIG) \
129IMPORT(RET) NAME SIG; \
130template <class... ARGS> \
131inline RET _pp ## NAME(ARGS&&... args) noexcept\
132{\
133 return NAME(std::forward<ARGS>(args)...); \
134}
135
136
137#define CVB_DEF_CAPI_C(RET, NAME, SIG) \
138IMPORT_C(RET) NAME SIG; \
139namespace Cvb { CVB_BEGIN_INLINE_NS namespace CExports { \
140template <class... ARGS> \
141inline RET _pp ## NAME(ARGS&&... args) noexcept\
142{\
143 return NAME(std::forward<ARGS>(args)...); \
144} \
145} CVB_END_INLINE_NS }
146
147#define CVB_CALL_CAPI(CALL) \
148 CExports::_pp ## CALL
149
150/* Applies CVB_CALL_CAPI on a function returning one of the "checkable"
151 * return types (cvbres_t or cvbbool_t) and fires corresponding exception
152 * if the call fails. */
153#define CVB_CALL_CAPI_CHECKED(CALL) \
154{ \
155 auto res = CVB_CALL_CAPI(CALL); \
156 static_assert (std::is_same<decltype(res), CExports::cvbbool_t>::value || std::is_same<decltype(res), CExports::cvbres_t>::value, \
157 "Unsupported CVB call return type"); \
158 if (!CExports::CheckErrorCode (res)) \
159 { \
160 Utilities::SystemInfo::ThrowLastError(CExports::MakeErrorCode(res)); \
161 } \
162}
163
164typedef cvbval_t THistogram[256]; // NOLINT(cppcoreguidelines-avoid-c-arrays)
165
166//#pragma pack(push, 1)
167struct cvbguid_t
168{
169 std::uint32_t Data1;
170 std::uint16_t Data2;
171 std::uint16_t Data3;
172 std::uint8_t Data4[8]; // NOLINT(cppcoreguidelines-avoid-c-arrays)
173};
174//#pragma pack(pop)
175
176
177inline bool operator==(const cvbguid_t & lhs, const cvbguid_t & rhs) noexcept
178{
179 return lhs.Data1 == rhs.Data1
180 && lhs.Data2 == rhs.Data2
181 && lhs.Data3 == rhs.Data3
182 && *reinterpret_cast<const std::uint64_t *>(lhs.Data4) == *reinterpret_cast<const std::uint64_t *>(rhs.Data4);
183}
184
185inline bool operator!=(const cvbguid_t & lhs, const cvbguid_t & rhs) noexcept
186{
187 return !(lhs == rhs);
188}
189
190typedef void * IMG;
191typedef void * OBJ;
192typedef void *PIXELLIST;
193
194typedef cvbbool_t (__stdcall *TFProgress)(void* pPrivate, cvbval_t StepsTotal, cvbval_t StepsDone);
195
196typedef void(__stdcall * PFFINALRELEASE) (void * pBufferBase, void * pUserData);
197
198
199struct TMatrix
200{
201 double A11;
202 double A12;
203 double A21;
204 double A22;
205};
206
207struct TDRect
208{
209 double Left;
210 double Top;
211 double Right;
212 double Bottom;
213};
214
215struct TArea
216{
217 double X0;
218 double Y0;
219 double X1;
220 double Y1;
221 double X2;
222 double Y2;
223};
224
225struct TCoordinateMap
226{
227
228 double OrgX;
229 double OrgY;
230 TMatrix Matrix;
231};
232
233enum TNormalizeMode
234{
235 Normalize_MeanVariance = 0,
236 Normalize_MinMax = 1
237};
238
239enum TDatatype
240{
241 DT_Signed = 0x100,
242 DT_Float = 0x200,
243 DT_Overlay = 0x400,
244 DT_ComplexPacked = 0x800
245};
246
247enum TColorModel
248{
249 CM_Guess_RGB = -2,
250 CM_Guess_Mono = -1,
251 CM_Unknown = 0,
252 CM_Mono = 1,
253 CM_RGB = 2,
254 CM_YUV = 3,
255 CM_HSI = 4,
256 CM_YCbCr = 5,
257 CM_LUV = 6,
258 CM_Lab = 7,
259 CM_HLS = 8,
260 CM_YCC = 9,
261 CM_HSV = 10,
262 CM_XYZ = 11
263};
264
265enum TSubPixelMode
266{
267 SP_None = 0,
268 SP_Parabolic_Fast = 1,
269 SP_Parabolic_Accurate = 2,
270 SP_Gauss = 3
271};
272
273enum TPanoramaMode
274{
275 PM_Horizontal = 0,
276 PM_Vertical = 1
277};
278
279enum TVPATRotation
280{
281 VPATROT_Unknown = -1,
282 VPATROT_0 = 0,
283 VPATROT_90 = 1,
284 VPATROT_180 = 2,
285 VPATROT_270 = 3
286};
287
288struct VPAEntry
289{
290 intptr_t XEntry;
291 intptr_t YEntry;
292};
293typedef VPAEntry * PVPAT;
294
295
296inline cvbres_t MakeErrorCode(cvbres_t errorCode) noexcept
297{
298 return errorCode;
299}
300
301inline cvbres_t MakeErrorCode(cvbbool_t status) noexcept
302{
303 return status ? 0 : static_cast<cvbres_t>(static_cast<cvbres_t>(CVC_E_ERROR) | 0x80000000);
304}
305
306inline cvbres_t MakeErrorCode(const void* result) noexcept
307{
308 return (result != nullptr) ? 0 : static_cast<cvbres_t>(static_cast<cvbres_t>(CVC_E_ERROR) | 0x80000000);
309}
310
311inline bool CheckErrorCode(cvbres_t errorCode) noexcept
312{
313 return errorCode ? false : true;
314}
315
316inline bool CheckErrorCode(cvbbool_t status) noexcept
317{
318 return status ? true : false;
319}
320
321inline bool CheckErrorCode(const void* result) noexcept
322{
323 return result != nullptr;
324}
325
326template <typename T, std::enable_if_t<std::is_pointer<T>::value, std::nullptr_t> = nullptr>
327inline void ReportError(T res, const std::string &functionName) noexcept
328{
329 std::string message = std::string("C-API call failed; returned a null pointer: ") + functionName;
330 ReportCVBErrorEx(MakeErrorCode(static_cast<const void *>(res)), message.c_str(), functionName.c_str());
331}
332
333template <typename T, std::enable_if_t<!std::is_pointer<T>::value, std::nullptr_t> = nullptr>
334inline void ReportError(T res, const std::string &functionName) noexcept
335{
336 auto codeToReport = MakeErrorCode(res);
337 const std::string message = CVB_C_API_ERROR_MESSAGE(functionName, codeToReport & 0x7FFFFFFF);
338 ReportCVBErrorEx(codeToReport, message.c_str(), functionName.c_str());
339}
340
341CVB_DEF_CAPI_X(cvbres_t, UpdateLicenses, ())
342CVB_DEF_CAPI_X(cvbres_t, UpdateLicensesDeep, ())
343IMPORT(cvbval_t) GetLicenseCount();
344CVB_DEF_CAPI_X(cvbres_t, GetLicenseInfoEx, (cvbval_t index, cvblicres_t& serialNumber, cvbbool_t& isFoundation))
345CVB_DEF_CAPI(cvbres_t, GetMagicNumber, (size_t index, char* szProviderName, size_t& providerNameBufferSize, char* szToolId, size_t& toolIDBufferSize, char* szMagicNumber, size_t& magicNumberBufferSize, cvblicres_t& serialNumber))
346IMPORT(cvbval_t) GetMagicNumberCount();
347
348CVB_DEF_CAPI(cvbbool_t, ReleaseObject, (OBJ & P))
349CVB_DEF_CAPI(cvbbool_t, ShareObject, (OBJ P))
350
351
352CVB_DEF_CAPI_X(cvbbool_t, CopyImageRectPlanes, (IMG imgSrc, IMG imgDst, cvbdim_t srcLeft, cvbdim_t srcTop, cvbdim_t srcRight, cvbdim_t srcBottom, cvbdim_t dstX, cvbdim_t dstY))
353
354
355
356
357
358CVB_DEF_CAPI_X(cvbbool_t, CreateDuplicateImageEx, (IMG imgSrc, IMG & imgDst))
359
360
361
362
363
364
365CVB_DEF_CAPI_X(cvbbool_t, CreateGenericImageDT, (cvbval_t ADimension, cvbdim_t AWidth, cvbdim_t AHeight, cvbdatatype_t Datatype, IMG & Image))
366
367
368
369
370IMPORT(TColorModel) ImageColorModel(IMG ImgIn);
371IMPORT(cvbdatatype_t) ImageDatatype(IMG I, cvbdim_t index);
372IMPORT(cvbdim_t) ImageDimension(IMG I);
373IMPORT(cvbdim_t) ImageHeight(IMG I);
374IMPORT(cvbdim_t) ImageWidth(IMG I);
375
376
377CVB_DEF_CAPI_X(cvbbool_t , GetImageVPA,(IMG I, cvbdim_t Index, void ** lpBase, PVPAT * VPAT))
378
379CVB_DEF_CAPI_X(cvbbool_t, CreateNormalizedImage, (IMG I, TNormalizeMode Mode, double TargetMeanMin, double TargetVarianceMax, IMG & Image))
380CVB_DEF_CAPI_X(cvbbool_t, MapTo8Bit, (IMG I, cvbbool_t CollectiveNormalization, IMG & ImgOut))
381
382
383CVB_DEF_CAPI(cvbbool_t, LoadImageFile, (const char * szFileName, IMG & Image))
384CVB_DEF_CAPI(cvbbool_t, LoadImageFileW, (const wchar_t * szFileName, IMG & Image))
385
386CVB_DEF_CAPI_X(cvbbool_t, WriteImageFile, (IMG I, const char * szFileName))
387CVB_DEF_CAPI_X(cvbbool_t, WriteImageFileW,(IMG I, const wchar_t * szFileName))
388CVB_DEF_CAPI_X(cvbbool_t, WriteLossyImageFile, (IMG I, double Quality, const char * szFileName))
389CVB_DEF_CAPI_X(cvbbool_t, WriteLossyImageFileW, (IMG I, double Quality, const wchar_t * szFileName))
390
391
392CVB_DEF_CAPI_X(cvbbool_t, GetDatatypeMinMaxVal, (cvbdatatype_t DataType, cvbval_t & MinVal, cvbval_t & MaxVal))
393
394
395CVB_DEF_CAPI_X(cvbbool_t, CreateConcatenatedImage, (IMG * ImgArray, std::size_t ArrayLength, cvbbool_t ShareMemory, IMG & ImgOut))
396CVB_DEF_CAPI_X(cvbres_t, CreateImageFromPointer, (void * pImageMem, std::size_t MemSize, cvbdim_t Width, cvbdim_t Height, cvbdim_t NumPlanes, cvbdatatype_t DataType, std::intptr_t PitchX, std::intptr_t PitchY, std::intptr_t PitchPlane, cvbval_t PlaneOrder[], PFFINALRELEASE ReleaseCallback, void * pUserData, IMG & ImgOut))
397CVB_DEF_CAPI_X(cvbbool_t, CreateImageMap, (IMG I, cvbdim_t SrcLeft, cvbdim_t SrcTop, cvbdim_t SrcRight, cvbdim_t SrcBottom, cvbdim_t DstWidth, cvbdim_t DstHeight, IMG & Image))
398CVB_DEF_CAPI_X(cvbbool_t, CreateRotatedImageMap, (IMG I, TVPATRotation rotation, IMG & Image))
399CVB_DEF_CAPI_X(cvbbool_t, CreateImageSubList, (IMG I, cvbdim_t Index, cvbval_t Count, cvbbool_t Share, IMG & Image))
400CVB_DEF_CAPI_X(cvbbool_t, ImageHistogram, (IMG I, cvbdim_t Index, cvbdensity_t Density, TArea Area, cvbval_t* HGram))
401
402IMPORT(void) ImageAreaToPixel (IMG I, TArea ImageArea, TArea& PixelArea);
403IMPORT(void) ImageToPixel (IMG I, double XI, double YI, double& XP, double& YP);
404IMPORT(void) PixelAreaToImage (IMG I, TArea PixelArea, TArea& ImageArea);
405IMPORT(void) PixelToImage (IMG I, double XP, double YP, double& XI, double& YI);
406
407CVB_DEF_CAPI(cvbbool_t, GetImageCoordinates, (IMG I, TCoordinateMap& CS))
408CVB_DEF_CAPI(cvbbool_t, SetImageCoordinates, (IMG I, TCoordinateMap CS))
409
410IMPORT(void) CoordinateMapTransformArea (TArea AreaIn, TCoordinateMap CS,
411 TArea& AreaOut);
412
413CVB_DEF_CAPI(cvbbool_t, ListPixelEx, (PIXELLIST List, cvbval_t Index, double *Data))
414
415CVB_DEF_CAPI_X(cvbbool_t, AddPixel, (PIXELLIST List, const double *Data))
416
417IMPORT(cvbval_t) PixelListCount (PIXELLIST Pixels);
418IMPORT(cvbdim_t) PixelListDimension (PIXELLIST List);
419IMPORT(PIXELLIST) CreatePixelList(cvbdim_t Dimension);
420IMPORT(cvbbool_t) CreatePixelListFromOverlay (IMG ImgIn, cvbdim_t Dim, cvbdim_t Left, cvbdim_t Top, cvbdim_t Right, cvbdim_t Bottom, PIXELLIST& List);
421IMPORT(cvbbool_t) TransformPixelListMatrix (PIXELLIST List, TMatrix A, double OffsetX, double OffsetY);
422
423CVB_DEF_CAPI_X(cvbbool_t, FindMaximaEx, (IMG I, cvbdim_t PlaneIndex, cvbdim_t Left, cvbdim_t Top, cvbdim_t Right, cvbdim_t Bottom, cvbdim_t Locality, double Threshold, PIXELLIST& Maxima))
424CVB_DEF_CAPI_X(cvbbool_t, FindSubPixelMaxima, (IMG image, cvbdim_t planeIndex, cvbdim_t left, cvbdim_t top, cvbdim_t right, cvbdim_t bottom, cvbdim_t locality, double threshold, TSubPixelMode subPixelMode, cvbdim_t radius, PIXELLIST& maxima))
425CVB_DEF_CAPI_X(cvbbool_t, CreateAreaAffineTransformedImage, (IMG imgIn, const TCoordinateMap& coordinateMap, const TArea& area, IMG& imgOut))
426CVB_DEF_CAPI_X(cvbbool_t, CreateMatrixTransformedImageEx, (IMG Img, TMatrix Matrix2D, IMG& ImgOut))
427CVB_DEF_CAPI_X(cvbbool_t, CreateInversePolarImage, (IMG src, double alpha0, double rMin, IMG& dst))
428CVB_DEF_CAPI_X(cvbbool_t, CreatePanoramicImageMap, (IMG ImgA, IMG ImgB, TPanoramaMode PanoMode, IMG &ImgOut))
429CVB_DEF_CAPI_X(cvbbool_t, CreatePolarImageEx, (IMG Img, double CX, double CY, double Alpha0, double AlphaTotal, double RMin, double RMax, IMG& ImgOut))
430CVB_DEF_CAPI_X(cvbbool_t, InversePolarTransform,(IMG src, double cx, double cy, double alpha0, double rMin, IMG dst))
431CVB_DEF_CAPI_X(cvbbool_t, ApplyWhiteBalance, (IMG img, double gain_red, double gain_green, double gain_blue))
432CVB_DEF_CAPI_X(cvbbool_t, CalculateWhiteBalance, (IMG img, TArea aoi, double& gain_red, double& gain_green, double& gain_blue))
433
434CVB_DEF_CAPI_X(cvbbool_t, IsImage, (OBJ P));
435
436inline void _ppReleaseObjectVoid(void * handle)
437{
438 CExports::_ppReleaseObject(handle);
439}
440
441inline cvbbool_t _ppLoadImageFileTyped(const char * szFileName, IMG & Image)
442{
443 return CExports::_ppLoadImageFile(szFileName, Image);
444}
445
446inline cvbbool_t _ppLoadImageFileTyped(const wchar_t * szFileName, IMG & Image)
447{
448 return CExports::_ppLoadImageFileW(szFileName, Image);
449}
450
451inline cvbbool_t _ppWriteImageFileTyped(IMG I, const char * szFileName)
452{
453 return CExports::_ppWriteImageFile(I, szFileName);
454}
455
456inline cvbbool_t _ppWriteImageFileTyped(IMG I, const wchar_t * szFileName)
457{
458 return CExports::_ppWriteImageFileW(I, szFileName);
459}
460
461inline cvbbool_t _ppWriteLossyImageFileTyped(IMG I, double Quality, const char* szFileName)
462{
463 return CExports::_ppWriteLossyImageFile(I, Quality, szFileName);
464}
465
466inline cvbbool_t _ppWriteLossyImageFileTyped(IMG I, double Quality, const wchar_t* szFileName)
467{
468 return CExports::_ppWriteLossyImageFileW(I, Quality, szFileName);
469}
470
471
472struct CVIPointD
473{
474 double X;
475 double Y;
476};
477
478
479}
480
481
482CVB_END_INLINE_NS
483
484}
485
cvbbool_t CreateMatrixTransformedImageEx(IMG ImageIn, TMatrix Matrix, IMG &ImageOut)
cvbbool_t CreateAreaAffineTransformedImage(IMG ImageIn, const TCoordinateMap &CS, const TArea &Area, IMG &ImageOut)
void PixelAreaToImage(IMG Image, TArea PixelArea, TArea &ImageArea)
void ImageToPixel(IMG Image, double ImageX, double ImageY, double &PixelX, double &PixelY)
void PixelToImage(IMG Image, double PixelX, double PixelY, double &ImageX, double &ImageY)
void ImageAreaToPixel(IMG Image, TArea ImageArea, TArea &PixelArea)
void CoordinateMapTransformArea(TArea AreaIn, TCoordinateMap CS, TArea &AreaOut)
cvbres_t GetLicenseInfoEx(cvbval_t Index, cvblicres_t &SerialNumber, cvbbool_t &IsFoundation)
cvbres_t GetMagicNumber(size_t Index, char *ProviderName, size_t &ProviderNameBufferSize, char *ToolID, size_t &ToolIDBufferSize, char *MagicNumber, size_t &MagicNumberBufferSize, cvblicres_t &SerialNumber)
cvbres_t UpdateLicenses()
cvbval_t GetMagicNumberCount()
cvbres_t UpdateLicensesDeep()
cvbval_t GetLicenseCount()
cvbbool_t GetImageCoordinates(IMG Image, TCoordinateMap &CS)
cvbdim_t ImageDimension(IMG Image)
cvbbool_t GetImageVPA(IMG Image, cvbval_t PlaneIndex, void **ppBase, PVPAT *ppVPAT)
cvbdim_t ImageWidth(IMG Image)
cvbdim_t ImageHeight(IMG Image)
cvbdatatype_t ImageDatatype(IMG Image, cvbval_t PlaneIndex)
cvbbool_t SetImageCoordinates(IMG Image, TCoordinateMap CS)
cvbbool_t AddPixel(PIXELLIST PixelList, const double *Components)
cvbval_t PixelListCount(PIXELLIST PixelList)
cvbdim_t PixelListDimension(PIXELLIST PixelList)
cvbbool_t ListPixelEx(PIXELLIST PixelList, cvbval_t Index, double *Components)
cvbbool_t CopyImageRectPlanes(IMG ImageIn, IMG ImageOut, cvbdim_t InLeft, cvbdim_t InTop, cvbdim_t InRight, cvbdim_t InBottom, cvbdim_t OutX, cvbdim_t OutY)
cvbbool_t CreateImageSubList(IMG ImageIn, cvbval_t PlaneIndex, cvbval_t NumPlanes, cvbbool_t MapImage, IMG &ImageOut)
cvbbool_t LoadImageFileW(const wchar_t *FileName, IMG &ImageOut)
TColorModel ImageColorModel(IMG Image)
cvbbool_t WriteImageFile(IMG Image, const char *FileName)
cvbbool_t WriteImageFileW(IMG Image, const wchar_t *FileName)
cvbbool_t CreateConcatenatedImage(IMG *ImageArray, size_t ArrayLength, cvbbool_t ShareMemory, IMG &ImageOut)
cvbbool_t LoadImageFile(const char *FileName, IMG &ImageOut)
cvbbool_t GetDatatypeMinMaxVal(cvbdatatype_t Datatype, cvbval_t &MinVal, cvbval_t &MaxVal)
cvbbool_t CreateGenericImageDT(cvbval_t NumPlanes, cvbval_t Width, cvbval_t Height, cvbdatatype_t Dataype, IMG &ImageOut)
cvbbool_t CreatePanoramicImageMap(IMG ImageA, IMG ImageB, TPanoramaMode PanoramaMode, IMG &ImageOut)
cvbbool_t WriteLossyImageFile(IMG Image, double Quality, const char *FileName)
cvbbool_t WriteLossyImageFileW(IMG Image, double Quality, const wchar_t *FileName)
cvbbool_t CreateImageMap(IMG ImageIn, cvbval_t InLeft, cvbval_t InTop, cvbval_t InRight, cvbval_t InBottom, cvbval_t OutWidth, cvbval_t OutHeight, IMG &ImageOut)
cvbbool_t CreateRotatedImageMap(IMG ImageIn, TVPATRotation Rotation, IMG &ImageOut)
cvbbool_t CreateDuplicateImageEx(IMG ImageIn, IMG &ImageOut)
cvbres_t CreateImageFromPointer(void *pImageMemory, size_t MemorySize, cvbdim_t Width, cvbdim_t Height, cvbdim_t NumPlanes, cvbdatatype_t DataType, intptr_t PitchX, intptr_t PitchY, intptr_t PitchPlane, const cvbval_t PlaneOrder[], PFFINALRELEASE ReleaseCallback, void *pPrivate, IMG &ImageOut)
cvbbool_t CalculateWhiteBalance(IMG Image, TArea Area, double &GainRed, double &GainGreen, double &GainBlue)
cvbbool_t ApplyWhiteBalance(IMG Image, double GainRed, double GainGreen, double GainBlue)
cvbbool_t FindMaximaEx(IMG Image, cvbval_t PlaneIndex, cvbval_t Left, cvbval_t Top, cvbval_t Right, cvbval_t Bottom, cvbval_t Locality, double Threshold, PIXELLIST &MaximaList)
cvbbool_t ImageHistogram(IMG Image, cvbval_t PlaneIndex, cvbdensity_t Density, TArea Area, THistogram &Histogram)
cvbbool_t FindSubPixelMaxima(IMG Image, cvbdim_t PlaneIndex, cvbdim_t Left, cvbdim_t Top, cvbdim_t Right, cvbdim_t Bottom, cvbdim_t Locality, double Threshold, TSubPixelMode SubPixelMode, cvbdim_t Radius, PIXELLIST &MaximaList)
cvbbool_t CreateNormalizedImage(IMG ImageIn, TNormalizeMode Mode, double TargetMeanMin, double TargetStandardDeviationMax, IMG &ImageOut)
cvbbool_t CreatePixelListFromOverlay(IMG ImageIn, cvbval_t PixelListDimension, cvbval_t Left, cvbval_t Top, cvbval_t Right, cvbval_t Bottom, PIXELLIST &PixelList)
cvbbool_t CreatePolarImageEx(IMG ImageIn, double CenterX, double CenterY, double Alpha0, double AlphaTotal, double InnerRadius, double OuterRadius, IMG &ImageOut)
cvbbool_t CreateInversePolarImage(IMG ImageIn, double Alpha0, double InnerRadius, IMG &ImageOut)
cvbbool_t ShareObject(OBJ Object)
cvbbool_t IsImage(IMG Image)
cvbbool_t ReleaseObject(OBJ &Object)
PIXELLIST CreatePixelList(cvbdim_t Dimension)
cvbbool_t TransformPixelListMatrix(PIXELLIST PixelList, TMatrix A, double OffsetX, double OffsetY)
Root namespace for the Image Manager interface.
Definition c_bayer_to_rgb.h:17
std::unique_ptr< Image > InversePolarTransform(const Image &image, Angle startAngle, double innerRadius)
Definition algorithm.hpp:195
std::unique_ptr< Image > MapTo8Bit(const Image &image, PlaneNormalization planeNormalization=PlaneNormalization::Identical)
Take an input image and scale the pixel values to fit into the 8 bit value range.
Definition algorithm.hpp:89