opencv中的CV_MAKETYPE及其他相关基本类型定义

opencv中的CV_MAKETYPE及其他相关基本类型定义

在文件Cvdef.h(路径为opencv\sources\modules\core\include\opencv2\core)中,可以看到opencv中类似于CV_8U等描述图像结构的定义:

opencv中的CV_MAKETYPE及其他相关基本类型定义_第1张图片

在这里,我们称类似CV_8U的宏定义为“图像类型描述符”。从上图看出,所有的“图像类型描述符”均经由一个叫做 CV_MAKETYPE的宏来定义。根据上述代码,我们可以推导出公式:

CV_MAKETYPE(depth,cn)=(cn-1)*8+depth

通过这个公式,我们可以定义CV_8UC1,CV_8UC4。。。一直到CV_64UC4的“图像类型描述符”,而且保证了他们的值不会冲突。

#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_8UC1 CV_MAKETYPE(CV_8U,1)//=1
#define CV_8UC2 CV_MAKETYPE(CV_8U,2)//=2
#define CV_8UC3 CV_MAKETYPE(CV_8U,3)//=3
#define CV_8UC4 CV_MAKETYPE(CV_8U,4)//=4
#define CV_8UC(n) CV_MAKETYPE(CV_8U,(n))//=n%8(取余)+0*8

#define CV_8SC1 CV_MAKETYPE(CV_8S,1)//=9
#define CV_8SC2 CV_MAKETYPE(CV_8S,2)//=10
#define CV_8SC3 CV_MAKETYPE(CV_8S,3)//=11
#define CV_8SC4 CV_MAKETYPE(CV_8S,4)//=12
#define CV_8SC(n) CV_MAKETYPE(CV_8S,(n))//=n%8+1*8
...
#define CV_64FC1 CV_MAKETYPE(CV_64F,1)//=49
#define CV_64FC2 CV_MAKETYPE(CV_64F,2)//=50
#define CV_64FC3 CV_MAKETYPE(CV_64F,3)//=51
#define CV_64FC4 CV_MAKETYPE(CV_64F,4)//=52
#define CV_64FC(n) CV_MAKETYPE(CV_64F,(n))//=n%8+6*8

你可能感兴趣的:(C++库,opecv)