node-native-win-utils 1.4.0 → 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/README.md +29 -82
  2. package/binding.gyp +2 -0
  3. package/dist/dirnameLocal.cjs +4 -0
  4. package/dist/dirnameLocal.d.cts +1 -0
  5. package/dist/dirnameLocal.d.mts +1 -0
  6. package/dist/dirnameLocal.mjs +2 -0
  7. package/dist/{index.js → index.cjs} +83 -16
  8. package/dist/{index.d.ts → index.d.cts} +68 -17
  9. package/dist/index.d.mts +230 -0
  10. package/dist/index.mjs +212 -0
  11. package/dist/keyCodes.d.mts +101 -0
  12. package/dist/keyCodes.mjs +201 -0
  13. package/node22.json +16 -0
  14. package/package.json +19 -9
  15. package/prebuilds/win32-x64/node-native-win-utils.node +0 -0
  16. package/src/cpp/keyboard.cpp +141 -140
  17. package/src/cpp/main.cpp +9 -3
  18. package/src/cpp/{capturewindow.cpp → screenshot.cpp} +174 -2
  19. package/src/dirnameLocal.mts +3 -0
  20. package/src/index.mts +455 -0
  21. package/src/keyCodes.mts +203 -0
  22. package/dllCopy.js +0 -14
  23. package/include/opencv2/core/affine.hpp +0 -678
  24. package/include/opencv2/core/async.hpp +0 -105
  25. package/include/opencv2/core/base.hpp +0 -664
  26. package/include/opencv2/core/bindings_utils.hpp +0 -325
  27. package/include/opencv2/core/bufferpool.hpp +0 -40
  28. package/include/opencv2/core/check.hpp +0 -170
  29. package/include/opencv2/core/core.hpp +0 -48
  30. package/include/opencv2/core/core_c.h +0 -3128
  31. package/include/opencv2/core/cuda/block.hpp +0 -211
  32. package/include/opencv2/core/cuda/border_interpolate.hpp +0 -722
  33. package/include/opencv2/core/cuda/color.hpp +0 -309
  34. package/include/opencv2/core/cuda/common.hpp +0 -131
  35. package/include/opencv2/core/cuda/datamov_utils.hpp +0 -113
  36. package/include/opencv2/core/cuda/detail/color_detail.hpp +0 -2018
  37. package/include/opencv2/core/cuda/detail/reduce.hpp +0 -365
  38. package/include/opencv2/core/cuda/detail/reduce_key_val.hpp +0 -502
  39. package/include/opencv2/core/cuda/detail/transform_detail.hpp +0 -392
  40. package/include/opencv2/core/cuda/detail/type_traits_detail.hpp +0 -191
  41. package/include/opencv2/core/cuda/detail/vec_distance_detail.hpp +0 -121
  42. package/include/opencv2/core/cuda/dynamic_smem.hpp +0 -88
  43. package/include/opencv2/core/cuda/emulation.hpp +0 -269
  44. package/include/opencv2/core/cuda/filters.hpp +0 -293
  45. package/include/opencv2/core/cuda/funcattrib.hpp +0 -79
  46. package/include/opencv2/core/cuda/functional.hpp +0 -805
  47. package/include/opencv2/core/cuda/limits.hpp +0 -128
  48. package/include/opencv2/core/cuda/reduce.hpp +0 -209
  49. package/include/opencv2/core/cuda/saturate_cast.hpp +0 -292
  50. package/include/opencv2/core/cuda/scan.hpp +0 -258
  51. package/include/opencv2/core/cuda/simd_functions.hpp +0 -869
  52. package/include/opencv2/core/cuda/transform.hpp +0 -75
  53. package/include/opencv2/core/cuda/type_traits.hpp +0 -90
  54. package/include/opencv2/core/cuda/utility.hpp +0 -230
  55. package/include/opencv2/core/cuda/vec_distance.hpp +0 -232
  56. package/include/opencv2/core/cuda/vec_math.hpp +0 -923
  57. package/include/opencv2/core/cuda/vec_traits.hpp +0 -288
  58. package/include/opencv2/core/cuda/warp.hpp +0 -139
  59. package/include/opencv2/core/cuda/warp_reduce.hpp +0 -76
  60. package/include/opencv2/core/cuda/warp_shuffle.hpp +0 -162
  61. package/include/opencv2/core/cuda.hpp +0 -1279
  62. package/include/opencv2/core/cuda.inl.hpp +0 -763
  63. package/include/opencv2/core/cuda_stream_accessor.hpp +0 -86
  64. package/include/opencv2/core/cuda_types.hpp +0 -144
  65. package/include/opencv2/core/cv_cpu_dispatch.h +0 -381
  66. package/include/opencv2/core/cv_cpu_helper.h +0 -550
  67. package/include/opencv2/core/cvdef.h +0 -973
  68. package/include/opencv2/core/cvstd.hpp +0 -190
  69. package/include/opencv2/core/cvstd.inl.hpp +0 -197
  70. package/include/opencv2/core/cvstd_wrapper.hpp +0 -154
  71. package/include/opencv2/core/detail/async_promise.hpp +0 -71
  72. package/include/opencv2/core/detail/dispatch_helper.impl.hpp +0 -49
  73. package/include/opencv2/core/detail/exception_ptr.hpp +0 -27
  74. package/include/opencv2/core/directx.hpp +0 -184
  75. package/include/opencv2/core/dualquaternion.hpp +0 -979
  76. package/include/opencv2/core/dualquaternion.inl.hpp +0 -487
  77. package/include/opencv2/core/eigen.hpp +0 -402
  78. package/include/opencv2/core/fast_math.hpp +0 -433
  79. package/include/opencv2/core/hal/hal.hpp +0 -256
  80. package/include/opencv2/core/hal/interface.h +0 -190
  81. package/include/opencv2/core/hal/intrin.hpp +0 -939
  82. package/include/opencv2/core/hal/intrin_avx.hpp +0 -3177
  83. package/include/opencv2/core/hal/intrin_avx512.hpp +0 -3090
  84. package/include/opencv2/core/hal/intrin_cpp.hpp +0 -3321
  85. package/include/opencv2/core/hal/intrin_forward.hpp +0 -191
  86. package/include/opencv2/core/hal/intrin_lasx.hpp +0 -3236
  87. package/include/opencv2/core/hal/intrin_msa.hpp +0 -1887
  88. package/include/opencv2/core/hal/intrin_neon.hpp +0 -2610
  89. package/include/opencv2/core/hal/intrin_rvv.hpp +0 -3320
  90. package/include/opencv2/core/hal/intrin_rvv071.hpp +0 -2545
  91. package/include/opencv2/core/hal/intrin_rvv_scalable.hpp +0 -2080
  92. package/include/opencv2/core/hal/intrin_sse.hpp +0 -3467
  93. package/include/opencv2/core/hal/intrin_sse_em.hpp +0 -180
  94. package/include/opencv2/core/hal/intrin_vsx.hpp +0 -1608
  95. package/include/opencv2/core/hal/intrin_wasm.hpp +0 -2782
  96. package/include/opencv2/core/hal/msa_macros.h +0 -1558
  97. package/include/opencv2/core/hal/simd_utils.impl.hpp +0 -186
  98. package/include/opencv2/core/llapi/llapi.h +0 -102
  99. package/include/opencv2/core/mat.hpp +0 -3775
  100. package/include/opencv2/core/mat.inl.hpp +0 -3422
  101. package/include/opencv2/core/matx.hpp +0 -1536
  102. package/include/opencv2/core/neon_utils.hpp +0 -128
  103. package/include/opencv2/core/ocl.hpp +0 -917
  104. package/include/opencv2/core/ocl_genbase.hpp +0 -69
  105. package/include/opencv2/core/opencl/ocl_defs.hpp +0 -82
  106. package/include/opencv2/core/opencl/opencl_info.hpp +0 -212
  107. package/include/opencv2/core/opencl/opencl_svm.hpp +0 -81
  108. package/include/opencv2/core/opencl/runtime/autogenerated/opencl_clblas.hpp +0 -602
  109. package/include/opencv2/core/opencl/runtime/autogenerated/opencl_clfft.hpp +0 -146
  110. package/include/opencv2/core/opencl/runtime/autogenerated/opencl_core.hpp +0 -371
  111. package/include/opencv2/core/opencl/runtime/autogenerated/opencl_core_wrappers.hpp +0 -272
  112. package/include/opencv2/core/opencl/runtime/autogenerated/opencl_gl.hpp +0 -62
  113. package/include/opencv2/core/opencl/runtime/autogenerated/opencl_gl_wrappers.hpp +0 -42
  114. package/include/opencv2/core/opencl/runtime/opencl_clblas.hpp +0 -53
  115. package/include/opencv2/core/opencl/runtime/opencl_clfft.hpp +0 -53
  116. package/include/opencv2/core/opencl/runtime/opencl_core.hpp +0 -84
  117. package/include/opencv2/core/opencl/runtime/opencl_core_wrappers.hpp +0 -47
  118. package/include/opencv2/core/opencl/runtime/opencl_gl.hpp +0 -53
  119. package/include/opencv2/core/opencl/runtime/opencl_gl_wrappers.hpp +0 -47
  120. package/include/opencv2/core/opencl/runtime/opencl_svm_20.hpp +0 -48
  121. package/include/opencv2/core/opencl/runtime/opencl_svm_definitions.hpp +0 -42
  122. package/include/opencv2/core/opencl/runtime/opencl_svm_hsa_extension.hpp +0 -166
  123. package/include/opencv2/core/opengl.hpp +0 -733
  124. package/include/opencv2/core/openvx/ovx_defs.hpp +0 -48
  125. package/include/opencv2/core/operations.hpp +0 -610
  126. package/include/opencv2/core/optim.hpp +0 -302
  127. package/include/opencv2/core/ovx.hpp +0 -28
  128. package/include/opencv2/core/parallel/backend/parallel_for.openmp.hpp +0 -72
  129. package/include/opencv2/core/parallel/backend/parallel_for.tbb.hpp +0 -153
  130. package/include/opencv2/core/parallel/parallel_backend.hpp +0 -90
  131. package/include/opencv2/core/persistence.hpp +0 -1350
  132. package/include/opencv2/core/private/cv_cpu_include_simd_declarations.hpp +0 -30
  133. package/include/opencv2/core/private.cuda.hpp +0 -169
  134. package/include/opencv2/core/private.hpp +0 -896
  135. package/include/opencv2/core/quaternion.hpp +0 -1696
  136. package/include/opencv2/core/quaternion.inl.hpp +0 -1063
  137. package/include/opencv2/core/saturate.hpp +0 -180
  138. package/include/opencv2/core/simd_intrinsics.hpp +0 -87
  139. package/include/opencv2/core/softfloat.hpp +0 -514
  140. package/include/opencv2/core/sse_utils.hpp +0 -652
  141. package/include/opencv2/core/traits.hpp +0 -417
  142. package/include/opencv2/core/types.hpp +0 -2457
  143. package/include/opencv2/core/types_c.h +0 -2126
  144. package/include/opencv2/core/utility.hpp +0 -1229
  145. package/include/opencv2/core/utils/allocator_stats.hpp +0 -29
  146. package/include/opencv2/core/utils/allocator_stats.impl.hpp +0 -158
  147. package/include/opencv2/core/utils/buffer_area.private.hpp +0 -136
  148. package/include/opencv2/core/utils/configuration.private.hpp +0 -22
  149. package/include/opencv2/core/utils/filesystem.hpp +0 -82
  150. package/include/opencv2/core/utils/filesystem.private.hpp +0 -66
  151. package/include/opencv2/core/utils/fp_control.private.hpp +0 -29
  152. package/include/opencv2/core/utils/fp_control_utils.hpp +0 -69
  153. package/include/opencv2/core/utils/instrumentation.hpp +0 -125
  154. package/include/opencv2/core/utils/lock.private.hpp +0 -119
  155. package/include/opencv2/core/utils/logger.defines.hpp +0 -42
  156. package/include/opencv2/core/utils/logger.hpp +0 -218
  157. package/include/opencv2/core/utils/logtag.hpp +0 -28
  158. package/include/opencv2/core/utils/plugin_loader.private.hpp +0 -165
  159. package/include/opencv2/core/utils/tls.hpp +0 -235
  160. package/include/opencv2/core/utils/trace.hpp +0 -252
  161. package/include/opencv2/core/utils/trace.private.hpp +0 -421
  162. package/include/opencv2/core/va_intel.hpp +0 -75
  163. package/include/opencv2/core/version.hpp +0 -26
  164. package/include/opencv2/core/vsx_utils.hpp +0 -1047
  165. package/include/opencv2/core.hpp +0 -3365
  166. package/include/opencv2/imgcodecs/imgcodecs.hpp +0 -48
  167. package/include/opencv2/imgcodecs/imgcodecs_c.h +0 -1
  168. package/include/opencv2/imgcodecs/ios.h +0 -59
  169. package/include/opencv2/imgcodecs/legacy/constants_c.h +0 -54
  170. package/include/opencv2/imgcodecs/macosx.h +0 -20
  171. package/include/opencv2/imgcodecs.hpp +0 -407
  172. package/include/opencv2/imgproc/bindings.hpp +0 -34
  173. package/include/opencv2/imgproc/detail/gcgraph.hpp +0 -395
  174. package/include/opencv2/imgproc/hal/hal.hpp +0 -246
  175. package/include/opencv2/imgproc/hal/interface.h +0 -46
  176. package/include/opencv2/imgproc/imgproc.hpp +0 -48
  177. package/include/opencv2/imgproc/imgproc_c.h +0 -1177
  178. package/include/opencv2/imgproc/segmentation.hpp +0 -141
  179. package/include/opencv2/imgproc/types_c.h +0 -659
  180. package/include/opencv2/imgproc.hpp +0 -5035
  181. package/include/opencv2/opencv_modules.hpp +0 -17
  182. package/include/tesseract/baseapi.h +0 -820
  183. package/include/tesseract/capi.h +0 -485
  184. package/include/tesseract/export.h +0 -37
  185. package/include/tesseract/ltrresultiterator.h +0 -235
  186. package/include/tesseract/ocrclass.h +0 -158
  187. package/include/tesseract/osdetect.h +0 -139
  188. package/include/tesseract/pageiterator.h +0 -364
  189. package/include/tesseract/publictypes.h +0 -281
  190. package/include/tesseract/renderer.h +0 -334
  191. package/include/tesseract/resultiterator.h +0 -250
  192. package/include/tesseract/tesseract.h +0 -40
  193. package/include/tesseract/unichar.h +0 -174
  194. package/include/tesseract/version.h +0 -34
  195. package/include/tesseract/version.h.in +0 -34
  196. package/libs/libjpeg-turbo.lib +0 -0
  197. package/libs/libpng.lib +0 -0
  198. package/libs/opencv_core470.lib +0 -0
  199. package/libs/opencv_imgcodecs470.lib +0 -0
  200. package/libs/opencv_imgproc470.lib +0 -0
  201. package/libs/tesseract.lib +0 -0
  202. package/libs/zlib.lib +0 -0
  203. /package/dist/{keyCodes.js → keyCodes.cjs} +0 -0
  204. /package/dist/{keyCodes.d.ts → keyCodes.d.cts} +0 -0
@@ -1,302 +0,0 @@
1
- /*M///////////////////////////////////////////////////////////////////////////////////////
2
- //
3
- // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
4
- //
5
- // By downloading, copying, installing or using the software you agree to this license.
6
- // If you do not agree to this license, do not download, install,
7
- // copy or use the software.
8
- //
9
- //
10
- // License Agreement
11
- // For Open Source Computer Vision Library
12
- //
13
- // Copyright (C) 2013, OpenCV Foundation, all rights reserved.
14
- // Third party copyrights are property of their respective owners.
15
- //
16
- // Redistribution and use in source and binary forms, with or without modification,
17
- // are permitted provided that the following conditions are met:
18
- //
19
- // * Redistribution's of source code must retain the above copyright notice,
20
- // this list of conditions and the following disclaimer.
21
- //
22
- // * Redistribution's in binary form must reproduce the above copyright notice,
23
- // this list of conditions and the following disclaimer in the documentation
24
- // and/or other materials provided with the distribution.
25
- //
26
- // * The name of the copyright holders may not be used to endorse or promote products
27
- // derived from this software without specific prior written permission.
28
- //
29
- // This software is provided by the copyright holders and contributors "as is" and
30
- // any express or implied warranties, including, but not limited to, the implied
31
- // warranties of merchantability and fitness for a particular purpose are disclaimed.
32
- // In no event shall the OpenCV Foundation or contributors be liable for any direct,
33
- // indirect, incidental, special, exemplary, or consequential damages
34
- // (including, but not limited to, procurement of substitute goods or services;
35
- // loss of use, data, or profits; or business interruption) however caused
36
- // and on any theory of liability, whether in contract, strict liability,
37
- // or tort (including negligence or otherwise) arising in any way out of
38
- // the use of this software, even if advised of the possibility of such damage.
39
- //
40
- //M*/
41
-
42
- #ifndef OPENCV_OPTIM_HPP
43
- #define OPENCV_OPTIM_HPP
44
-
45
- #include "opencv2/core.hpp"
46
-
47
- namespace cv
48
- {
49
-
50
- /** @addtogroup core_optim
51
- The algorithms in this section minimize or maximize function value within specified constraints or
52
- without any constraints.
53
- @{
54
- */
55
-
56
- /** @brief Basic interface for all solvers
57
- */
58
- class CV_EXPORTS MinProblemSolver : public Algorithm
59
- {
60
- public:
61
- /** @brief Represents function being optimized
62
- */
63
- class CV_EXPORTS Function
64
- {
65
- public:
66
- virtual ~Function() {}
67
- virtual int getDims() const = 0;
68
- virtual double getGradientEps() const;
69
- virtual double calc(const double* x) const = 0;
70
- virtual void getGradient(const double* x,double* grad);
71
- };
72
-
73
- /** @brief Getter for the optimized function.
74
-
75
- The optimized function is represented by Function interface, which requires derivatives to
76
- implement the calc(double*) and getDim() methods to evaluate the function.
77
-
78
- @return Smart-pointer to an object that implements Function interface - it represents the
79
- function that is being optimized. It can be empty, if no function was given so far.
80
- */
81
- virtual Ptr<Function> getFunction() const = 0;
82
-
83
- /** @brief Setter for the optimized function.
84
-
85
- *It should be called at least once before the call to* minimize(), as default value is not usable.
86
-
87
- @param f The new function to optimize.
88
- */
89
- virtual void setFunction(const Ptr<Function>& f) = 0;
90
-
91
- /** @brief Getter for the previously set terminal criteria for this algorithm.
92
-
93
- @return Deep copy of the terminal criteria used at the moment.
94
- */
95
- virtual TermCriteria getTermCriteria() const = 0;
96
-
97
- /** @brief Set terminal criteria for solver.
98
-
99
- This method *is not necessary* to be called before the first call to minimize(), as the default
100
- value is sensible.
101
-
102
- Algorithm stops when the number of function evaluations done exceeds termcrit.maxCount, when
103
- the function values at the vertices of simplex are within termcrit.epsilon range or simplex
104
- becomes so small that it can enclosed in a box with termcrit.epsilon sides, whatever comes
105
- first.
106
- @param termcrit Terminal criteria to be used, represented as cv::TermCriteria structure.
107
- */
108
- virtual void setTermCriteria(const TermCriteria& termcrit) = 0;
109
-
110
- /** @brief actually runs the algorithm and performs the minimization.
111
-
112
- The sole input parameter determines the centroid of the starting simplex (roughly, it tells
113
- where to start), all the others (terminal criteria, initial step, function to be minimized) are
114
- supposed to be set via the setters before the call to this method or the default values (not
115
- always sensible) will be used.
116
-
117
- @param x The initial point, that will become a centroid of an initial simplex. After the algorithm
118
- will terminate, it will be set to the point where the algorithm stops, the point of possible
119
- minimum.
120
- @return The value of a function at the point found.
121
- */
122
- virtual double minimize(InputOutputArray x) = 0;
123
- };
124
-
125
- /** @brief This class is used to perform the non-linear non-constrained minimization of a function,
126
-
127
- defined on an `n`-dimensional Euclidean space, using the **Nelder-Mead method**, also known as
128
- **downhill simplex method**. The basic idea about the method can be obtained from
129
- <http://en.wikipedia.org/wiki/Nelder-Mead_method>.
130
-
131
- It should be noted, that this method, although deterministic, is rather a heuristic and therefore
132
- may converge to a local minima, not necessary a global one. It is iterative optimization technique,
133
- which at each step uses an information about the values of a function evaluated only at `n+1`
134
- points, arranged as a *simplex* in `n`-dimensional space (hence the second name of the method). At
135
- each step new point is chosen to evaluate function at, obtained value is compared with previous
136
- ones and based on this information simplex changes it's shape , slowly moving to the local minimum.
137
- Thus this method is using *only* function values to make decision, on contrary to, say, Nonlinear
138
- Conjugate Gradient method (which is also implemented in optim).
139
-
140
- Algorithm stops when the number of function evaluations done exceeds termcrit.maxCount, when the
141
- function values at the vertices of simplex are within termcrit.epsilon range or simplex becomes so
142
- small that it can enclosed in a box with termcrit.epsilon sides, whatever comes first, for some
143
- defined by user positive integer termcrit.maxCount and positive non-integer termcrit.epsilon.
144
-
145
- @note DownhillSolver is a derivative of the abstract interface
146
- cv::MinProblemSolver, which in turn is derived from the Algorithm interface and is used to
147
- encapsulate the functionality, common to all non-linear optimization algorithms in the optim
148
- module.
149
-
150
- @note term criteria should meet following condition:
151
- @code
152
- termcrit.type == (TermCriteria::MAX_ITER + TermCriteria::EPS) && termcrit.epsilon > 0 && termcrit.maxCount > 0
153
- @endcode
154
- */
155
- class CV_EXPORTS DownhillSolver : public MinProblemSolver
156
- {
157
- public:
158
- /** @brief Returns the initial step that will be used in downhill simplex algorithm.
159
-
160
- @param step Initial step that will be used in algorithm. Note, that although corresponding setter
161
- accepts column-vectors as well as row-vectors, this method will return a row-vector.
162
- @see DownhillSolver::setInitStep
163
- */
164
- virtual void getInitStep(OutputArray step) const=0;
165
-
166
- /** @brief Sets the initial step that will be used in downhill simplex algorithm.
167
-
168
- Step, together with initial point (given in DownhillSolver::minimize) are two `n`-dimensional
169
- vectors that are used to determine the shape of initial simplex. Roughly said, initial point
170
- determines the position of a simplex (it will become simplex's centroid), while step determines the
171
- spread (size in each dimension) of a simplex. To be more precise, if \f$s,x_0\in\mathbb{R}^n\f$ are
172
- the initial step and initial point respectively, the vertices of a simplex will be:
173
- \f$v_0:=x_0-\frac{1}{2} s\f$ and \f$v_i:=x_0+s_i\f$ for \f$i=1,2,\dots,n\f$ where \f$s_i\f$ denotes
174
- projections of the initial step of *n*-th coordinate (the result of projection is treated to be
175
- vector given by \f$s_i:=e_i\cdot\left<e_i\cdot s\right>\f$, where \f$e_i\f$ form canonical basis)
176
-
177
- @param step Initial step that will be used in algorithm. Roughly said, it determines the spread
178
- (size in each dimension) of an initial simplex.
179
- */
180
- virtual void setInitStep(InputArray step)=0;
181
-
182
- /** @brief This function returns the reference to the ready-to-use DownhillSolver object.
183
-
184
- All the parameters are optional, so this procedure can be called even without parameters at
185
- all. In this case, the default values will be used. As default value for terminal criteria are
186
- the only sensible ones, MinProblemSolver::setFunction() and DownhillSolver::setInitStep()
187
- should be called upon the obtained object, if the respective parameters were not given to
188
- create(). Otherwise, the two ways (give parameters to createDownhillSolver() or miss them out
189
- and call the MinProblemSolver::setFunction() and DownhillSolver::setInitStep()) are absolutely
190
- equivalent (and will drop the same errors in the same way, should invalid input be detected).
191
- @param f Pointer to the function that will be minimized, similarly to the one you submit via
192
- MinProblemSolver::setFunction.
193
- @param initStep Initial step, that will be used to construct the initial simplex, similarly to the one
194
- you submit via MinProblemSolver::setInitStep.
195
- @param termcrit Terminal criteria to the algorithm, similarly to the one you submit via
196
- MinProblemSolver::setTermCriteria.
197
- */
198
- static Ptr<DownhillSolver> create(const Ptr<MinProblemSolver::Function>& f=Ptr<MinProblemSolver::Function>(),
199
- InputArray initStep=Mat_<double>(1,1,0.0),
200
- TermCriteria termcrit=TermCriteria(TermCriteria::MAX_ITER+TermCriteria::EPS,5000,0.000001));
201
- };
202
-
203
- /** @brief This class is used to perform the non-linear non-constrained minimization of a function
204
- with known gradient,
205
-
206
- defined on an *n*-dimensional Euclidean space, using the **Nonlinear Conjugate Gradient method**.
207
- The implementation was done based on the beautifully clear explanatory article [An Introduction to
208
- the Conjugate Gradient Method Without the Agonizing
209
- Pain](http://www.cs.cmu.edu/~quake-papers/painless-conjugate-gradient.pdf) by Jonathan Richard
210
- Shewchuk. The method can be seen as an adaptation of a standard Conjugate Gradient method (see, for
211
- example <http://en.wikipedia.org/wiki/Conjugate_gradient_method>) for numerically solving the
212
- systems of linear equations.
213
-
214
- It should be noted, that this method, although deterministic, is rather a heuristic method and
215
- therefore may converge to a local minima, not necessary a global one. What is even more disastrous,
216
- most of its behaviour is ruled by gradient, therefore it essentially cannot distinguish between
217
- local minima and maxima. Therefore, if it starts sufficiently near to the local maximum, it may
218
- converge to it. Another obvious restriction is that it should be possible to compute the gradient of
219
- a function at any point, thus it is preferable to have analytic expression for gradient and
220
- computational burden should be born by the user.
221
-
222
- The latter responsibility is accomplished via the getGradient method of a
223
- MinProblemSolver::Function interface (which represents function being optimized). This method takes
224
- point a point in *n*-dimensional space (first argument represents the array of coordinates of that
225
- point) and compute its gradient (it should be stored in the second argument as an array).
226
-
227
- @note class ConjGradSolver thus does not add any new methods to the basic MinProblemSolver interface.
228
-
229
- @note term criteria should meet following condition:
230
- @code
231
- termcrit.type == (TermCriteria::MAX_ITER + TermCriteria::EPS) && termcrit.epsilon > 0 && termcrit.maxCount > 0
232
- // or
233
- termcrit.type == TermCriteria::MAX_ITER) && termcrit.maxCount > 0
234
- @endcode
235
- */
236
- class CV_EXPORTS ConjGradSolver : public MinProblemSolver
237
- {
238
- public:
239
- /** @brief This function returns the reference to the ready-to-use ConjGradSolver object.
240
-
241
- All the parameters are optional, so this procedure can be called even without parameters at
242
- all. In this case, the default values will be used. As default value for terminal criteria are
243
- the only sensible ones, MinProblemSolver::setFunction() should be called upon the obtained
244
- object, if the function was not given to create(). Otherwise, the two ways (submit it to
245
- create() or miss it out and call the MinProblemSolver::setFunction()) are absolutely equivalent
246
- (and will drop the same errors in the same way, should invalid input be detected).
247
- @param f Pointer to the function that will be minimized, similarly to the one you submit via
248
- MinProblemSolver::setFunction.
249
- @param termcrit Terminal criteria to the algorithm, similarly to the one you submit via
250
- MinProblemSolver::setTermCriteria.
251
- */
252
- static Ptr<ConjGradSolver> create(const Ptr<MinProblemSolver::Function>& f=Ptr<ConjGradSolver::Function>(),
253
- TermCriteria termcrit=TermCriteria(TermCriteria::MAX_ITER+TermCriteria::EPS,5000,0.000001));
254
- };
255
-
256
- //! return codes for cv::solveLP() function
257
- enum SolveLPResult
258
- {
259
- SOLVELP_UNBOUNDED = -2, //!< problem is unbounded (target function can achieve arbitrary high values)
260
- SOLVELP_UNFEASIBLE = -1, //!< problem is unfeasible (there are no points that satisfy all the constraints imposed)
261
- SOLVELP_SINGLE = 0, //!< there is only one maximum for target function
262
- SOLVELP_MULTI = 1 //!< there are multiple maxima for target function - the arbitrary one is returned
263
- };
264
-
265
- /** @brief Solve given (non-integer) linear programming problem using the Simplex Algorithm (Simplex Method).
266
-
267
- What we mean here by "linear programming problem" (or LP problem, for short) can be formulated as:
268
-
269
- \f[\mbox{Maximize } c\cdot x\\
270
- \mbox{Subject to:}\\
271
- Ax\leq b\\
272
- x\geq 0\f]
273
-
274
- Where \f$c\f$ is fixed `1`-by-`n` row-vector, \f$A\f$ is fixed `m`-by-`n` matrix, \f$b\f$ is fixed `m`-by-`1`
275
- column vector and \f$x\f$ is an arbitrary `n`-by-`1` column vector, which satisfies the constraints.
276
-
277
- Simplex algorithm is one of many algorithms that are designed to handle this sort of problems
278
- efficiently. Although it is not optimal in theoretical sense (there exist algorithms that can solve
279
- any problem written as above in polynomial time, while simplex method degenerates to exponential
280
- time for some special cases), it is well-studied, easy to implement and is shown to work well for
281
- real-life purposes.
282
-
283
- The particular implementation is taken almost verbatim from **Introduction to Algorithms, third
284
- edition** by T. H. Cormen, C. E. Leiserson, R. L. Rivest and Clifford Stein. In particular, the
285
- Bland's rule <http://en.wikipedia.org/wiki/Bland%27s_rule> is used to prevent cycling.
286
-
287
- @param Func This row-vector corresponds to \f$c\f$ in the LP problem formulation (see above). It should
288
- contain 32- or 64-bit floating point numbers. As a convenience, column-vector may be also submitted,
289
- in the latter case it is understood to correspond to \f$c^T\f$.
290
- @param Constr `m`-by-`n+1` matrix, whose rightmost column corresponds to \f$b\f$ in formulation above
291
- and the remaining to \f$A\f$. It should contain 32- or 64-bit floating point numbers.
292
- @param z The solution will be returned here as a column-vector - it corresponds to \f$c\f$ in the
293
- formulation above. It will contain 64-bit floating point numbers.
294
- @return One of cv::SolveLPResult
295
- */
296
- CV_EXPORTS_W int solveLP(InputArray Func, InputArray Constr, OutputArray z);
297
-
298
- //! @}
299
-
300
- }// cv
301
-
302
- #endif
@@ -1,28 +0,0 @@
1
- // This file is part of OpenCV project.
2
- // It is subject to the license terms in the LICENSE file found in the top-level directory
3
- // of this distribution and at http://opencv.org/license.html.
4
-
5
- // Copyright (C) 2016, Intel Corporation, all rights reserved.
6
- // Third party copyrights are property of their respective owners.
7
-
8
- // OpenVX related definitions and declarations
9
-
10
- #pragma once
11
- #ifndef OPENCV_OVX_HPP
12
- #define OPENCV_OVX_HPP
13
-
14
- #include "cvdef.h"
15
-
16
- namespace cv
17
- {
18
- /// Check if use of OpenVX is possible
19
- CV_EXPORTS_W bool haveOpenVX();
20
-
21
- /// Check if use of OpenVX is enabled
22
- CV_EXPORTS_W bool useOpenVX();
23
-
24
- /// Enable/disable use of OpenVX
25
- CV_EXPORTS_W void setUseOpenVX(bool flag);
26
- } // namespace cv
27
-
28
- #endif // OPENCV_OVX_HPP
@@ -1,72 +0,0 @@
1
- // This file is part of OpenCV project.
2
- // It is subject to the license terms in the LICENSE file found in the top-level directory
3
- // of this distribution and at http://opencv.org/license.html.
4
-
5
- #ifndef OPENCV_CORE_PARALLEL_FOR_OPENMP_HPP
6
- #define OPENCV_CORE_PARALLEL_FOR_OPENMP_HPP
7
-
8
- #include "opencv2/core/parallel/parallel_backend.hpp"
9
-
10
- #if !defined(_OPENMP) && !defined(OPENCV_SKIP_OPENMP_PRESENSE_CHECK)
11
- #error "This file must be compiled with enabled OpenMP"
12
- #endif
13
-
14
- #include <omp.h>
15
-
16
- namespace cv { namespace parallel { namespace openmp {
17
-
18
- /** OpenMP parallel_for API implementation
19
- *
20
- * @sa setParallelForBackend
21
- * @ingroup core_parallel_backend
22
- */
23
- class ParallelForBackend : public ParallelForAPI
24
- {
25
- protected:
26
- int numThreads;
27
- int numThreadsMax;
28
- public:
29
- ParallelForBackend()
30
- {
31
- numThreads = 0;
32
- numThreadsMax = omp_get_max_threads();
33
- }
34
-
35
- virtual ~ParallelForBackend() {}
36
-
37
- virtual void parallel_for(int tasks, FN_parallel_for_body_cb_t body_callback, void* callback_data) CV_OVERRIDE
38
- {
39
- #pragma omp parallel for schedule(dynamic) num_threads(numThreads > 0 ? numThreads : numThreadsMax)
40
- for (int i = 0; i < tasks; ++i)
41
- body_callback(i, i + 1, callback_data);
42
- }
43
-
44
- virtual int getThreadNum() const CV_OVERRIDE
45
- {
46
- return omp_get_thread_num();
47
- }
48
-
49
- virtual int getNumThreads() const CV_OVERRIDE
50
- {
51
- return numThreads > 0
52
- ? numThreads
53
- : numThreadsMax;
54
- }
55
-
56
- virtual int setNumThreads(int nThreads) CV_OVERRIDE
57
- {
58
- int oldNumThreads = numThreads;
59
- numThreads = nThreads;
60
- // nothing needed as numThreads is used in #pragma omp parallel for directly
61
- return oldNumThreads;
62
- }
63
-
64
- const char* getName() const CV_OVERRIDE
65
- {
66
- return "openmp";
67
- }
68
- };
69
-
70
- }}} // namespace
71
-
72
- #endif // OPENCV_CORE_PARALLEL_FOR_OPENMP_HPP
@@ -1,153 +0,0 @@
1
- // This file is part of OpenCV project.
2
- // It is subject to the license terms in the LICENSE file found in the top-level directory
3
- // of this distribution and at http://opencv.org/license.html.
4
-
5
- #ifndef OPENCV_CORE_PARALLEL_FOR_TBB_HPP
6
- #define OPENCV_CORE_PARALLEL_FOR_TBB_HPP
7
-
8
- #include "opencv2/core/parallel/parallel_backend.hpp"
9
- #include <opencv2/core/utils/logger.hpp>
10
-
11
- #ifndef TBB_SUPPRESS_DEPRECATED_MESSAGES // supress warning
12
- #define TBB_SUPPRESS_DEPRECATED_MESSAGES 1
13
- #endif
14
- #include "tbb/tbb.h"
15
- #if !defined(TBB_INTERFACE_VERSION)
16
- #error "Unknows/unsupported TBB version"
17
- #endif
18
-
19
- #if TBB_INTERFACE_VERSION >= 8000
20
- #include "tbb/task_arena.h"
21
- #endif
22
-
23
- namespace cv { namespace parallel { namespace tbb {
24
-
25
- using namespace ::tbb;
26
-
27
- #if TBB_INTERFACE_VERSION >= 8000
28
- static tbb::task_arena& getArena()
29
- {
30
- static tbb::task_arena tbbArena(tbb::task_arena::automatic);
31
- return tbbArena;
32
- }
33
- #else
34
- static tbb::task_scheduler_init& getScheduler()
35
- {
36
- static tbb::task_scheduler_init tbbScheduler(tbb::task_scheduler_init::deferred);
37
- return tbbScheduler;
38
- }
39
- #endif
40
-
41
- /** TBB parallel_for API implementation
42
- *
43
- * @sa setParallelForBackend
44
- * @ingroup core_parallel_backend
45
- */
46
- class ParallelForBackend : public ParallelForAPI
47
- {
48
- protected:
49
- int numThreads;
50
- int numThreadsMax;
51
- public:
52
- ParallelForBackend()
53
- {
54
- CV_LOG_INFO(NULL, "Initializing TBB parallel backend: TBB_INTERFACE_VERSION=" << TBB_INTERFACE_VERSION);
55
- numThreads = 0;
56
- #if TBB_INTERFACE_VERSION >= 8000
57
- (void)getArena();
58
- #else
59
- (void)getScheduler();
60
- #endif
61
- }
62
-
63
- virtual ~ParallelForBackend() {}
64
-
65
- class CallbackProxy
66
- {
67
- const FN_parallel_for_body_cb_t& callback;
68
- void* const callback_data;
69
- const int tasks;
70
- public:
71
- inline CallbackProxy(int tasks_, FN_parallel_for_body_cb_t& callback_, void* callback_data_)
72
- : callback(callback_), callback_data(callback_data_), tasks(tasks_)
73
- {
74
- // nothing
75
- }
76
-
77
- void operator()(const tbb::blocked_range<int>& range) const
78
- {
79
- this->callback(range.begin(), range.end(), callback_data);
80
- }
81
-
82
- void operator()() const
83
- {
84
- tbb::parallel_for(tbb::blocked_range<int>(0, tasks), *this);
85
- }
86
- };
87
-
88
- virtual void parallel_for(int tasks, FN_parallel_for_body_cb_t body_callback, void* callback_data) CV_OVERRIDE
89
- {
90
- CallbackProxy task(tasks, body_callback, callback_data);
91
- #if TBB_INTERFACE_VERSION >= 8000
92
- getArena().execute(task);
93
- #else
94
- task();
95
- #endif
96
- }
97
-
98
- virtual int getThreadNum() const CV_OVERRIDE
99
- {
100
- #if TBB_INTERFACE_VERSION >= 9100
101
- return tbb::this_task_arena::current_thread_index();
102
- #elif TBB_INTERFACE_VERSION >= 8000
103
- return tbb::task_arena::current_thread_index();
104
- #else
105
- return 0;
106
- #endif
107
- }
108
-
109
- virtual int getNumThreads() const CV_OVERRIDE
110
- {
111
- #if TBB_INTERFACE_VERSION >= 9100
112
- return getArena().max_concurrency();
113
- #elif TBB_INTERFACE_VERSION >= 8000
114
- return numThreads > 0
115
- ? numThreads
116
- : tbb::task_scheduler_init::default_num_threads();
117
- #else
118
- return getScheduler().is_active()
119
- ? numThreads
120
- : tbb::task_scheduler_init::default_num_threads();
121
- #endif
122
- }
123
-
124
- virtual int setNumThreads(int nThreads) CV_OVERRIDE
125
- {
126
- int oldNumThreads = numThreads;
127
- numThreads = nThreads;
128
-
129
- #if TBB_INTERFACE_VERSION >= 8000
130
- auto& tbbArena = getArena();
131
- if (tbbArena.is_active())
132
- tbbArena.terminate();
133
- if (numThreads > 0)
134
- tbbArena.initialize(numThreads);
135
- #else
136
- auto& tbbScheduler = getScheduler();
137
- if (tbbScheduler.is_active())
138
- tbbScheduler.terminate();
139
- if (numThreads > 0)
140
- tbbScheduler.initialize(numThreads);
141
- #endif
142
- return oldNumThreads;
143
- }
144
-
145
- const char* getName() const CV_OVERRIDE
146
- {
147
- return "tbb";
148
- }
149
- };
150
-
151
- }}} // namespace
152
-
153
- #endif // OPENCV_CORE_PARALLEL_FOR_TBB_HPP
@@ -1,90 +0,0 @@
1
- // This file is part of OpenCV project.
2
- // It is subject to the license terms in the LICENSE file found in the top-level directory
3
- // of this distribution and at http://opencv.org/license.html.
4
-
5
- #ifndef OPENCV_CORE_PARALLEL_BACKEND_HPP
6
- #define OPENCV_CORE_PARALLEL_BACKEND_HPP
7
-
8
- #include "opencv2/core/cvdef.h"
9
- #include <memory>
10
-
11
- namespace cv { namespace parallel {
12
- #ifndef CV_API_CALL
13
- #define CV_API_CALL
14
- #endif
15
-
16
- /** @addtogroup core_parallel_backend
17
- * @{
18
- * API below is provided to resolve problem of CPU resource over-subscription by multiple thread pools from different multi-threading frameworks.
19
- * This is common problem for cases when OpenCV compiled threading framework is different from the Users Applications framework.
20
- *
21
- * Applications can replace OpenCV `parallel_for()` backend with own implementation (to reuse Application's thread pool).
22
- *
23
- *
24
- * ### Backend API usage examples
25
- *
26
- * #### Intel TBB
27
- *
28
- * - include header with simple implementation of TBB backend:
29
- * @snippet parallel_backend/example-tbb.cpp tbb_include
30
- * - execute backend replacement code:
31
- * @snippet parallel_backend/example-tbb.cpp tbb_backend
32
- * - configuration of compiler/linker options is responsibility of Application's scripts
33
- *
34
- * #### OpenMP
35
- *
36
- * - include header with simple implementation of OpenMP backend:
37
- * @snippet parallel_backend/example-openmp.cpp openmp_include
38
- * - execute backend replacement code:
39
- * @snippet parallel_backend/example-openmp.cpp openmp_backend
40
- * - Configuration of compiler/linker options is responsibility of Application's scripts
41
- *
42
- *
43
- * ### Plugins support
44
- *
45
- * Runtime configuration options:
46
- * - change backend priority: `OPENCV_PARALLEL_PRIORITY_<backend>=9999`
47
- * - disable backend: `OPENCV_PARALLEL_PRIORITY_<backend>=0`
48
- * - specify list of backends with high priority (>100000): `OPENCV_PARALLEL_PRIORITY_LIST=TBB,OPENMP`. Unknown backends are registered as new plugins.
49
- *
50
- */
51
-
52
- /** Interface for parallel_for backends implementations
53
- *
54
- * @sa setParallelForBackend
55
- */
56
- class CV_EXPORTS ParallelForAPI
57
- {
58
- public:
59
- virtual ~ParallelForAPI();
60
-
61
- typedef void (CV_API_CALL *FN_parallel_for_body_cb_t)(int start, int end, void* data);
62
-
63
- virtual void parallel_for(int tasks, FN_parallel_for_body_cb_t body_callback, void* callback_data) = 0;
64
-
65
- virtual int getThreadNum() const = 0;
66
-
67
- virtual int getNumThreads() const = 0;
68
-
69
- virtual int setNumThreads(int nThreads) = 0;
70
-
71
- virtual const char* getName() const = 0;
72
- };
73
-
74
- /** @brief Replace OpenCV parallel_for backend
75
- *
76
- * Application can replace OpenCV `parallel_for()` backend with own implementation.
77
- *
78
- * @note This call is not thread-safe. Consider calling this function from the `main()` before any other OpenCV processing functions (and without any other created threads).
79
- */
80
- CV_EXPORTS void setParallelForBackend(const std::shared_ptr<ParallelForAPI>& api, bool propagateNumThreads = true);
81
-
82
- /** @brief Change OpenCV parallel_for backend
83
- *
84
- * @note This call is not thread-safe. Consider calling this function from the `main()` before any other OpenCV processing functions (and without any other created threads).
85
- */
86
- CV_EXPORTS_W bool setParallelForBackend(const std::string& backendName, bool propagateNumThreads = true);
87
-
88
- //! @}
89
- }} // namespace
90
- #endif // OPENCV_CORE_PARALLEL_BACKEND_HPP