CVB++ 15.0
c_polimago.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
10#include "../namespace.hpp"
11
12#include "c_img.h"
13
14
15namespace Cvb
16{
17
18CVB_BEGIN_INLINE_NS
19
20namespace CExports
21{
22
23
24
25
26/* DLL object types */
27typedef void* TCLF;
28typedef void* TSCLF;
29typedef void* TTESTRESULT;
30typedef void* TLEARNINGDATAACCESS;
31
32/* Callback functions */
33
34/* Enums and types */
35enum TMapMode
36{
37 MM_MantoStandard = 0
38};
39
40#pragma pack(push, 4)
41struct TFeatureMap
42{
43 TMapMode Mode;
44 cvbint32_t Interpolate;
45 cvbint32_t NumImgPlanes;
46 cvbint32_t FWL;
47 cvbint32_t FWT;
48 cvbint32_t FWR;
49 cvbint32_t FWB;
50 char Code[16]; // NOLINT(cppcoreguidelines-avoid-c-arrays)
51 cvbint32_t Normalization;
52 cvbint32_t FeatureResolution;
53 cvbint32_t RetinaW;
54 cvbint32_t RetinaH;
55 double CorrectX;
56 double CorrectY;
57 unsigned char Reserved[128]; // NOLINT(cppcoreguidelines-avoid-c-arrays)
58};
59#pragma pack(pop)
60
61enum TClassifierUsage
62{
63 CU_Regression = 0x55550002,
64 CU_ClassifyOneVersusAll = 0x55550003,
65 CU_ClassifyOneVersusOne = 0x55550001
66};
67
68struct TTrainParams
69{
70 TClassifierUsage Usage;
71 TFeatureMap FeatureMap;
72 double Lambda;
73 double Offset;
74};
75
76typedef double TTransformation[16]; // NOLINT(cppcoreguidelines-avoid-c-arrays)
77
78enum TInvarianceType
79{
80 TI_Translations = 1,
81 TI_RotScaleTrans = 2,
82 TI_AffineGroup = 3
83};
84
85#pragma pack(push, 4)
86struct TInvarianceParams
87{
88 TInvarianceType InvarianceType;
89 double XYRadius;
90 double MinScaleMinL;
91 double MaxScaleMaxL;
92 double MinAngle;
93 double MaxAngle;
94 char Reserved[256]; // NOLINT(cppcoreguidelines-avoid-c-arrays)
95};
96#pragma pack(pop)
97
98#pragma pack(push, 4)
99struct TTrainSearchParams
100{
101 TInvarianceParams InvarianceParams;
102 cvbint32_t SampleSize;
103 cvbint32_t NumClfs;
104 cvbint32_t Resolution12;
105 cvbint32_t ResolutionRest;
106 cvbint32_t NegaSense;
107 char Reserved[256]; // NOLINT(cppcoreguidelines-avoid-c-arrays)
108};
109#pragma pack(pop)
110
111struct TSearchResult
112{
113 double Quality;
114 TTransformation G;
115};
116
117typedef TSearchResult TDiagnostics[11]; // NOLINT(cppcoreguidelines-avoid-c-arrays)
118
119
120/* Classification and regression functions. */
121CVB_DEF_CAPI_X (cvbbool_t, PMClassify, (TCLF simpleClf, IMG img, cvbdim_t x, cvbdim_t y, char* classLabel, size_t len, double& confidence, double* confidences))
122CVB_DEF_CAPI_X (cvbbool_t, PMClassifyW, (TCLF simpleClf, IMG img, cvbdim_t x, cvbdim_t y, wchar_t* classLabel, size_t len, double& confidence, double* confidences))
123CVB_DEF_CAPI_X (cvbbool_t, PMPredictVector, (TCLF simpleClf, IMG img, cvbdim_t X, cvbdim_t Y, double* resultVector))
124
125/* Classification and Regression Classifiers */
126CVB_DEF_CAPI (cvbval_t, PMGetNumClasses, (TCLF clf))
127CVB_DEF_CAPI (cvbval_t, PMGetOutputDimension, (TCLF clf))
128CVB_DEF_CAPI (void, PMGetClfTrainParams, (TCLF clf, TTrainParams& params))
129CVB_DEF_CAPI_X (cvbbool_t, PMGetClfClassLabel, (TCLF clf, cvbval_t classIndex, char* szClassLabel))
130CVB_DEF_CAPI_X (cvbbool_t, PMGetClfClassLabelW, (TCLF clf, cvbval_t classIndex, wchar_t* szClassLabel))
131CVB_DEF_CAPI_X (cvbbool_t, PMSaveClf, (const char* szFileName, TCLF clf))
132CVB_DEF_CAPI_X (cvbbool_t, PMSaveClfW, (const wchar_t* szFileName, TCLF clf))
133CVB_DEF_CAPI_X (cvbbool_t, PMOpenClf, (const char* szFileName, TCLF &clf))
134CVB_DEF_CAPI_X (cvbbool_t, PMOpenClfW, (const wchar_t* szFileName, TCLF &clf))
135CVB_DEF_CAPI (cvbval_t, PMGetGranularity, (const char* Code))
136
137/* These functions manage the test results */
138CVB_DEF_CAPI_X (cvbbool_t, PMOpenTestResult, (const char* szFileName, TTESTRESULT &TR))
139CVB_DEF_CAPI_X (cvbbool_t, PMOpenTestResultW, (const wchar_t* szFileName, TTESTRESULT &TR))
140CVB_DEF_CAPI_X (cvbbool_t, PMSaveTestResult, (const char* szFileName, TTESTRESULT TR))
141CVB_DEF_CAPI_X (cvbbool_t, PMSaveTestResultW, (const wchar_t* szFileName, TTESTRESULT TR))
142CVB_DEF_CAPI (cvbval_t, PMGetTestResultNumExamples, (TTESTRESULT TR))
143CVB_DEF_CAPI (void, PMGetTestResultTrainParams, (TTESTRESULT TR, TTrainParams& params))
144CVB_DEF_CAPI (cvbdim_t, PMGetTestResultOutputDimension, (TTESTRESULT TR))
145CVB_DEF_CAPI (double, PMGetTestResultTargetValue, (TTESTRESULT TR, cvbval_t ExampleIndex, cvbval_t CoordinateIndex))
146CVB_DEF_CAPI (double, PMGetTestResultNumericalPrediction, (TTESTRESULT TR, cvbval_t ExampleIndex, cvbval_t CoordinateIndex))
147CVB_DEF_CAPI (double, PMGetTestResultTotalMeanSquareError, (TTESTRESULT TR))
148CVB_DEF_CAPI (double, PMGetTestResultExampleMeanSquareError, (TTESTRESULT TR, cvbval_t ExampleIndex))
149CVB_DEF_CAPI (cvbval_t, PMGetTestResultNumClasses, (TTESTRESULT TR))
150CVB_DEF_CAPI_X (cvbbool_t, PMGetTestResultClassLabel, (TTESTRESULT TR, cvbval_t ClassIndex, char* ClassLabel))
151CVB_DEF_CAPI_X (cvbbool_t, PMGetTestResultClassLabelW, (TTESTRESULT TR, cvbval_t ClassIndex, wchar_t* ClassLabel))
152CVB_DEF_CAPI (cvbval_t, PMGetTestResultNumErrors, (TTESTRESULT TR))
153CVB_DEF_CAPI (double, PMGetTestResultErrorRate, (TTESTRESULT TR))
154CVB_DEF_CAPI (cvbval_t, PMGetTestResultTrueClassIndex, (TTESTRESULT TR, cvbval_t ExampleIndex))
155CVB_DEF_CAPI (cvbval_t, PMGetTestResultPredictedClass, (TTESTRESULT TR, cvbval_t ExampleIndex))
156CVB_DEF_CAPI (double, PMGetTestResultConfidence, (TTESTRESULT TR, cvbval_t ExampleIndex))
157CVB_DEF_CAPI (double, PMGetTestResultConfidenceDistribution, (TTESTRESULT TR, cvbval_t ExampleIndex, cvbval_t ClassIndex))
158
159/* Searches an image */
160CVB_DEF_CAPI (cvbval_t, PMGridSearch, (TSCLF SearchClf, IMG img, cvbdim_t Left, cvbdim_t Top, cvbdim_t Right, cvbdim_t Bottom, double Step, double Threshold, double Locality, cvbval_t MaxNumResults, TSearchResult* Results, cvbval_t& NumCalls))
161CVB_DEF_CAPI_X (cvbbool_t, PMInspect, (TSCLF SearchClf, IMG img, TSearchResult &SearchResult, cvbval_t &SearchDepth))
162CVB_DEF_CAPI_X (cvbbool_t, PMInspectD, (TSCLF SearchClf, IMG img, TSearchResult &SearchResult, cvbval_t &SearchDepth, TDiagnostics Diagnostics)) // NOLINT(cppcoreguidelines-pro-bounds-array-to-pointer-decay)
163CVB_DEF_CAPI (void, PMGetSearchClfTrainParams, (TSCLF SearchClf, TTrainParams& TrainParams, TTrainSearchParams& TrainSearchParams))
164CVB_DEF_CAPI_X (cvbbool_t, PMSaveSearchClf, (const char* FileName, TSCLF SearchClf))
165CVB_DEF_CAPI_X (cvbbool_t, PMSaveSearchClfW, (const wchar_t* FileName, TSCLF SearchClf))
166CVB_DEF_CAPI_X (cvbbool_t, PMOpenSearchClf, (const char* FileName, TSCLF &SearchClf))
167CVB_DEF_CAPI_X (cvbbool_t, PMOpenSearchClfW, (const wchar_t* FileName, TSCLF &SearchClf))
168CVB_DEF_CAPI (void, PMGetXY, (TSCLF SearchClf, TSearchResult SearchResult, double &X, double &Y))
169CVB_DEF_CAPI (void, PMGetScaleAngle, (TSCLF SearchClf, TSearchResult SearchResult, double &Scale, double &Angle))
170CVB_DEF_CAPI (void, PMGetMatrix, (TSCLF SearchClf, TSearchResult SearchResult, TMatrix& mat))
171CVB_DEF_CAPI_X (cvbbool_t, PMSearchResultToImage, (TSCLF SearchClf, IMG imgSrc, TTransformation transformation, IMG &imgTarget)) // NOLINT(cppcoreguidelines-pro-bounds-array-to-pointer-decay)
172
173
174
175inline cvbbool_t _ppPMGetClfClassLabelTyped(TCLF clf, cvbval_t classIndex, char* szClassLabel)
176{
177 return CExports::_ppPMGetClfClassLabel(clf, classIndex, szClassLabel);
178}
179
180inline cvbbool_t _ppPMGetClfClassLabelTyped(TCLF clf, cvbval_t classIndex, wchar_t* szClassLabel)
181{
182 return CExports::_ppPMGetClfClassLabelW(clf, classIndex, szClassLabel);
183}
184
185inline cvbbool_t _ppPMSaveClfTyped(const char* szFileName, TCLF clf)
186{
187 return CExports::_ppPMSaveClf(szFileName, clf);
188}
189
190inline cvbbool_t _ppPMSaveClfTyped(const wchar_t* szFileName, TCLF clf)
191{
192 return CExports::_ppPMSaveClfW(szFileName, clf);
193}
194
195inline cvbbool_t _ppPMOpenClfTyped(const char* szFileName, TCLF &clf)
196{
197 return CExports::_ppPMOpenClf(szFileName, clf);
198}
199
200inline cvbbool_t _ppPMOpenClfTyped(const wchar_t* szFileName, TCLF &clf)
201{
202 return CExports::_ppPMOpenClfW(szFileName, clf);
203}
204
205inline cvbbool_t _ppPMClassifyTyped(TCLF simpleClf, IMG img, cvbdim_t x, cvbdim_t y, char* classLabel, size_t len, double& confidence, double* confidences)
206{
207 return CExports::_ppPMClassify(simpleClf, img, x, y, classLabel, len, confidence, confidences);
208}
209
210inline cvbbool_t _ppPMClassifyTyped(TCLF simpleClf, IMG img, cvbdim_t x, cvbdim_t y, wchar_t* classLabel, size_t len, double& confidence, double* confidences)
211{
212 return CExports::_ppPMClassifyW(simpleClf, img, x, y, classLabel, len, confidence, confidences);
213}
214
215inline cvbbool_t _ppPMSaveSearchClfTyped(const char* szFileName, TSCLF searchClf)
216{
217 return CExports::_ppPMSaveSearchClf(szFileName, searchClf);
218}
219
220inline cvbbool_t _ppPMSaveSearchClfTyped(const wchar_t* szFileName, TSCLF searchClf)
221{
222 return CExports::_ppPMSaveSearchClfW(szFileName, searchClf);
223}
224
225inline cvbbool_t _ppPMOpenSearchClfTyped(const char* szFileName, TSCLF &searchClf)
226{
227 return CExports::_ppPMOpenSearchClf(szFileName, searchClf);
228}
229
230inline cvbbool_t _ppPMOpenSearchClfTyped(const wchar_t* szFileName, TSCLF &searchClf)
231{
232 return CExports::_ppPMOpenSearchClfW(szFileName, searchClf);
233}
234
235inline cvbbool_t _ppPMOpenTestResultTyped(const char* szFileName, TTESTRESULT &TR)
236{
237 return CExports::_ppPMOpenTestResult(szFileName, TR);
238}
239
240inline cvbbool_t _ppPMOpenTestResultTyped(const wchar_t* szFileName, TTESTRESULT &TR)
241{
242 return CExports::_ppPMOpenTestResultW(szFileName, TR);
243}
244
245inline cvbbool_t _ppPMSaveTestResultTyped(const char* szFileName, TTESTRESULT TR)
246{
247 return CExports::_ppPMSaveTestResult(szFileName, TR);
248}
249
250inline cvbbool_t _ppPMSaveTestResultTyped(const wchar_t* szFileName, TTESTRESULT TR)
251{
252 return CExports::_ppPMSaveTestResultW(szFileName, TR);
253}
254
255inline cvbbool_t _ppPMGetTestResultClassLabelTyped(TTESTRESULT TR, cvbval_t ClassIndex, char* ClassLabel)
256{
257 return CExports::_ppPMGetTestResultClassLabel(TR, ClassIndex, ClassLabel);
258}
259
260inline cvbbool_t _ppPMGetTestResultClassLabelTyped(TTESTRESULT TR, cvbval_t ClassIndex, wchar_t* ClassLabel)
261{
262 return CExports::_ppPMGetTestResultClassLabelW(TR, ClassIndex, ClassLabel);
263}
264
265
266} /* namespace CExports */
267
268CVB_END_INLINE_NS
269
270} /* namespace Cvb */
271
Root namespace for the Image Manager interface.
Definition c_bayer_to_rgb.h:17
@ X
Sensor pixel values are mirrored in X (or denoted by u), so that the columns of the range map will be...
Definition core_3d.hpp:272
@ Y
Sensor pixel values are mirrored in Y (or denoted by v), so that the range map pixel values will be f...
Definition core_3d.hpp:278