OpenCV__type()返回的数字

OpenCV中的类型以宏定义的形式给出

type_c.h中片段

#define CV_CN_MAX     512
#define CV_CN_SHIFT   3
#define CV_DEPTH_MAX  (1 << CV_CN_SHIFT)

#define CV_8U   0
#define CV_8S   1
#define CV_16U  2
#define CV_16S  3
#define CV_32S  4
#define CV_32F  5
#define CV_64F  6
#define CV_USRTYPE1 7

#define CV_MAT_DEPTH_MASK       (CV_DEPTH_MAX - 1)
#define CV_MAT_DEPTH(flags)     ((flags) & CV_MAT_DEPTH_MASK)

#define CV_MAKETYPE(depth,cn) (CV_MAT_DEPTH(depth) + (((cn)-1) << CV_CN_SHIFT))
#define CV_MAKE_TYPE CV_MAKETYPE

#define CV_8UC1 CV_MAKETYPE(CV_8U,1)
#define CV_8UC2 CV_MAKETYPE(CV_8U,2)

...

#define CV_64FC4 CV_MAKETYPE(CV_64F,4)
#define CV_64FC(n) CV_MAKETYPE(CV_64F,(n))

其中channel中有1、2、3通道,flag有CV_8U、CV_8S等八种分别以0~7数字表示。
通道cn-1左移三位加上flag即为cv::Mat::type()的返回值。

通过返回值判断类型

返回值n除8取整加1为channel,所得的余数即为不同的flag。

原文地址:https://www.cnblogs.com/narjaja/p/9548682.html