44#ifndef OPENCV_CORE_TRAITS_HPP
45#define OPENCV_CORE_TRAITS_HPP
47#include "opencv2/core/cvdef.h"
115#ifdef OPENCV_TRAITS_ENABLE_DEPRECATED
116 typedef _Tp value_type;
117 typedef value_type work_type;
118 typedef value_type channel_type;
119 typedef value_type vec_type;
120 enum { generic_type = 1,
124 type = CV_MAKETYPE(depth, channels)
132 typedef bool value_type;
133 typedef int work_type;
134 typedef value_type channel_type;
135 typedef value_type vec_type;
136 enum { generic_type = 0,
140 type = CV_MAKETYPE(depth, channels)
147 typedef uchar value_type;
148 typedef int work_type;
149 typedef value_type channel_type;
150 typedef value_type vec_type;
151 enum { generic_type = 0,
155 type = CV_MAKETYPE(depth, channels)
162 typedef schar value_type;
163 typedef int work_type;
164 typedef value_type channel_type;
165 typedef value_type vec_type;
166 enum { generic_type = 0,
170 type = CV_MAKETYPE(depth, channels)
177 typedef schar value_type;
178 typedef int work_type;
179 typedef value_type channel_type;
180 typedef value_type vec_type;
181 enum { generic_type = 0,
185 type = CV_MAKETYPE(depth, channels)
192 typedef ushort value_type;
193 typedef int work_type;
194 typedef value_type channel_type;
195 typedef value_type vec_type;
196 enum { generic_type = 0,
200 type = CV_MAKETYPE(depth, channels)
207 typedef short value_type;
208 typedef int work_type;
209 typedef value_type channel_type;
210 typedef value_type vec_type;
211 enum { generic_type = 0,
215 type = CV_MAKETYPE(depth, channels)
222 typedef int value_type;
223 typedef value_type work_type;
224 typedef value_type channel_type;
225 typedef value_type vec_type;
226 enum { generic_type = 0,
230 type = CV_MAKETYPE(depth, channels)
237 typedef float value_type;
238 typedef value_type work_type;
239 typedef value_type channel_type;
240 typedef value_type vec_type;
241 enum { generic_type = 0,
245 type = CV_MAKETYPE(depth, channels)
252 typedef double value_type;
253 typedef value_type work_type;
254 typedef value_type channel_type;
255 typedef value_type vec_type;
256 enum { generic_type = 0,
260 type = CV_MAKETYPE(depth, channels)
267 typedef float16_t value_type;
268 typedef float work_type;
269 typedef value_type channel_type;
270 typedef value_type vec_type;
271 enum { generic_type = 0,
275 type = CV_MAKETYPE(depth, channels)
295#ifdef OPENCV_TRAITS_ENABLE_DEPRECATED
297template<
int _depth>
class TypeDepth
299#ifdef OPENCV_TRAITS_ENABLE_LEGACY_DEFAULTS
300 enum { depth = CV_USRTYPE1 };
301 typedef void value_type;
305template<>
class TypeDepth<CV_8U>
307 enum { depth = CV_8U };
308 typedef uchar value_type;
311template<>
class TypeDepth<CV_8S>
313 enum { depth = CV_8S };
314 typedef schar value_type;
317template<>
class TypeDepth<CV_16U>
319 enum { depth = CV_16U };
320 typedef ushort value_type;
323template<>
class TypeDepth<CV_16S>
325 enum { depth = CV_16S };
326 typedef short value_type;
329template<>
class TypeDepth<CV_32S>
331 enum { depth = CV_32S };
332 typedef int value_type;
335template<>
class TypeDepth<CV_32F>
337 enum { depth = CV_32F };
338 typedef float value_type;
341template<>
class TypeDepth<CV_64F>
343 enum { depth = CV_64F };
344 typedef double value_type;
347template<>
class TypeDepth<CV_16F>
349 enum { depth = CV_16F };
350 typedef float16_t value_type;
360#define CV_CREATE_MEMBER_CHECK(X) \
361template<typename T> class CheckMember_##X { \
362 struct Fallback { int X; }; \
363 struct Derived : T, Fallback { }; \
364 template<typename U, U> struct Check; \
365 typedef char CV_NO[1]; \
366 typedef char CV_YES[2]; \
367 template<typename U> static CV_NO & func(Check<int Fallback::*, &U::X> *); \
368 template<typename U> static CV_YES & func(...); \
370 typedef CheckMember_##X type; \
371 enum { value = sizeof(func<Derived>(0)) == sizeof(CV_YES) }; \
374CV_CREATE_MEMBER_CHECK(fmt)
375CV_CREATE_MEMBER_CHECK(type)
389template<
typename T,
bool available =
internal::CheckMember_type< DataType<T> >::value >
394{
enum { value = -1 }; };
401template<
typename T,
bool available =
internal::CheckMember_fmt< DataType<T> >::value >
406{
enum { fmt = 0 }; };
A helper class for cv::DataType
Definition: traits.hpp:285
Template "trait" class for OpenCV primitive data types.
Definition: traits.hpp:113
"black box" representation of the file storage associated with a file on disk.
Definition: aruco.hpp:75
Definition: traits.hpp:382
Definition: traits.hpp:402
Definition: traits.hpp:390
Definition: traits.hpp:386