CVB++ 15.0
c_sf2.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
14namespace Cvb
15{
16
17CVB_BEGIN_INLINE_NS
18
19namespace CExports
20{
21
22
23
24
25typedef void* SF;
26
27// SF2
28
29struct TSymmetryParams
30{
31 double A0;
32 double A1;
33 double R0;
34 double R1;
35 int ContrastMode;
36};
37
38const TSymmetryParams SP_SimpleModel = { 0, 0, 1.0, 1.0, 0 };
39const TSymmetryParams SP_TolerantModel = { -10, 10, 0.83, 1.2, 0 };
40const TSymmetryParams SP_RotationInvariance = { -180, 180, 1.0, 1.0, 0 };
41const TSymmetryParams SP_ScaleInvariance = { 0, 0, 0.66, 1.5, 0 };
42const TSymmetryParams SP_FullInvariance = { -180, 180, 0.66, 1.5, 0 };
43
44struct TSearchAllParams
45{
46 int LocXY;
47 int LocA;
48 int LocR;
49 int MaxNumSolutions;
50 int RelativeThreshold;
51 int MinimalThreshold;
52 int Precision;
53};
54
55const TSearchAllParams SAP_DefaultParams = { 10, 0x7FFFFFFF, 0x7FFFFFFF, 100, 78, 10, 2 };
56
57struct TSFSolution
58{
59 double X;
60 double Y;
61 double Z;
62 double A;
63 double R;
64};
65
66CVB_DEF_CAPI_X (cvbbool_t, GetSF2Symmetries, (SF Sf, TSymmetryParams &SymmetryParams))
67IMPORT(cvbbool_t) SetSF2SearchAllPars(SF Sf, TSearchAllParams SearchAllPars);
68IMPORT(SF) CreateSF2Ex(IMG img, cvbdim_t Index, cvbdim_t MX, cvbdim_t MY, double MAlpha, double MScale, cvbdim_t FWLeft, cvbdim_t FWTop, cvbdim_t FWRight, cvbdim_t FWBottom, cvbval_t Threshold, cvbval_t MinFeatureNumber, cvbval_t MaxCoarseScale, TSymmetryParams SParams, PIXELLIST DontCareList);
69IMPORT(SF) CreateSF2ExEx(IMG Image, cvbdim_t Index, cvbdim_t MX, cvbdim_t MY, double MAlpha, double MScale, cvbdim_t FWL, cvbdim_t FWT, cvbdim_t FWR, cvbdim_t FWB, cvbval_t Threshold, cvbval_t MinFeatureNumber, cvbval_t MaxCoarseScale, TSymmetryParams SParams, PIXELLIST DontCareList, int GradientMode, int AProfileSize, double ADelta);
70
71IMPORT(cvbbool_t) SF2Search(SF Sf, IMG img, cvbdim_t Index, cvbdim_t Left, cvbdim_t Top, cvbdim_t Right, cvbdim_t Bottom, PIXELLIST &results);
72IMPORT(cvbbool_t) SF2SearchEx(SF Sf, IMG img, cvbdim_t Index, cvbdim_t Left, cvbdim_t Top, cvbdim_t Right, cvbdim_t Bottom, TSymmetryParams Limits, PIXELLIST &results);
73CVB_DEF_CAPI_X(cvbbool_t, GetSF2Features, (SF Sf, PIXELLIST &FineFeatures, PIXELLIST &CoarseFeatures, cvbval_t &CoarseScale))
74CVB_DEF_CAPI_X(cvbbool_t, GetSF2TrainingWindow, (SF af, cvbdim_t &TWLeft, cvbdim_t &TWTop, cvbdim_t &TWRight, cvbdim_t &TWBottom))
75
76IMPORT(void) SetSFComment(SF Sf, const char *Comment);
77IMPORT(void) SetSFCommentW(SF Sf, const wchar_t *Comment);
78
79CVB_DEF_CAPI_X (cvbbool_t, PyramidFilter, (IMG img, IMG &imgOut))
80CVB_DEF_CAPI_X (cvbbool_t, GetSF2EdgeImage, (IMG img, cvbdim_t Index, IMG &ImgOut))
81CVB_DEF_CAPI_X (char*, GetSFComment, (SF Sf))
82CVB_DEF_CAPI_X (wchar_t*, GetSFCommentW, (SF Sf))
83
84inline void _ppSetSFCommentTyped(SF Sf, const char* Comment)
85{
86 SetSFComment(Sf, Comment);
87}
88
89inline void _ppSetSFCommentTyped(SF Sf, const wchar_t* Comment)
90{
91 SetSFCommentW(Sf, Comment);
92}
93
94inline cvbbool_t _ppGetSFCommentTyped (SF Sf, char*& pstrResult)
95{
96 pstrResult = CExports::_ppGetSFComment (Sf);
97 return nullptr != pstrResult;
98}
99
100inline cvbbool_t _ppGetSFCommentTyped (SF Sf, wchar_t*& pstrResult)
101{
102 pstrResult = CExports::_ppGetSFCommentW (Sf);
103 return nullptr != pstrResult;
104}
105
106
107// SF
108
109enum TSFGradientType
110{
111 SFF_Undefined = -1,
112 SFF_Roberts = 0,
113 SFF_Sobel = 1
114};
115
116enum SF2CudaStatus
117{
118 SFCS_Default = 0,
119 SFCS_ForceDisable = 1
120};
121
122IMPORT(cvbbool_t) SF2UseCuda(SF Sf, SF2CudaStatus Override);
123CVB_DEF_CAPI_X(cvbbool_t, GetSFFeatureWindow, (SF Sf, cvbdim_t &FWLeft, cvbdim_t &FWTop, cvbdim_t &FWRight, cvbdim_t &FWBottom))
124IMPORT(IMG) GetSFImage(cvbdim_t ClassID, SF Sf);
125IMPORT(cvbval_t) GetSFClassNumber(SF Sf);
126IMPORT(TSFGradientType) GetSFGradienttype(SF Sf);
127IMPORT(cvbval_t) GetSFThreshold(SF Sf);
128IMPORT(cvbbool_t) SetSFThreshold(SF Sf, cvbval_t Threshold);
129IMPORT(cvbval_t) GetSFAngularTolerance(SF Sf);
130IMPORT(cvbbool_t) SetSFAngularTolerance(SF Sf, cvbval_t AngularTolerance);
131IMPORT(cvbval_t) GetSFFeatureNumber(SF Sf);
132IMPORT(cvbbool_t) SFGradHistogram(IMG ImageIn, cvbdim_t Index, cvbdim_t Left, cvbdim_t Top, cvbdim_t Right, cvbdim_t Bottom, TSFGradientType FilterType, THistogram Histogram);
133
134CVB_DEF_CAPI_X(cvbbool_t, LoadSF, (SF &Sf, const char *FileName))
135CVB_DEF_CAPI_X(cvbbool_t, LoadSFW, (SF &Sf, const wchar_t *FileName))
136CVB_DEF_CAPI_X(cvbbool_t, StoreSF, (SF Sf, const char *FileName))
137CVB_DEF_CAPI_X(cvbbool_t, StoreSFW, (SF Sf, const wchar_t *FileName))
138
139
140inline cvbbool_t _ppLoadSFTyped(SF &Sf, const char *FileName)
141{
142 return _ppLoadSF(Sf, FileName);
143}
144
145inline cvbbool_t _ppLoadSFTyped(SF &Sf, const wchar_t *FileName)
146{
147 return _ppLoadSFW(Sf, FileName);
148}
149
150inline cvbbool_t _ppStoreSFTyped(SF Sf, const char *FileName)
151{
152 return _ppStoreSF(Sf, FileName);
153}
154
155inline cvbbool_t _ppStoreSFTyped(SF Sf, const wchar_t *FileName)
156{
157 return _ppStoreSFW(Sf, FileName);
158}
159
160}
161
162CVB_END_INLINE_NS
163
164}
Root namespace for the Image Manager interface.
Definition c_bayer_to_rgb.h:17