OpenCV小试牛刀1——OPENCV宏
来源:互联网 发布:黑搜对淘宝号有影响吗 编辑:程序博客网 时间:2024/04/30 07:12
1. CV_MAKETYPE(depth,cn)
#define CV_MAKETYPE(depth,cn) (CV_MAT_DEPTH(depth) + (((cn)-1) << CV_CN_SHIFT))这个宏用来读入位深度depth和通道数cn从而生成矩阵类型type。
这里先解释一下矩阵数据类型type,我们经常会看到诸如Mat img = Mat::zeros(w, w, CV_8UC1);的语句,在该语句中我们用CV_8UC1来标识要生成的矩阵元素类型,zeros函数利识别该标识进而产生相应的数据类型。
OpenCV中对矩阵的元素类型定义如下:
#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_8UC3 CV_MAKETYPE(CV_8U,3)#define CV_8UC4 CV_MAKETYPE(CV_8U,4)#define CV_8UC(n) CV_MAKETYPE(CV_8U,(n))#define CV_8SC1 CV_MAKETYPE(CV_8S,1)#define CV_8SC2 CV_MAKETYPE(CV_8S,2)#define CV_8SC3 CV_MAKETYPE(CV_8S,3)#define CV_8SC4 CV_MAKETYPE(CV_8S,4)#define CV_8SC(n) CV_MAKETYPE(CV_8S,(n))#define CV_16UC1 CV_MAKETYPE(CV_16U,1)#define CV_16UC2 CV_MAKETYPE(CV_16U,2)#define CV_16UC3 CV_MAKETYPE(CV_16U,3)#define CV_16UC4 CV_MAKETYPE(CV_16U,4)#define CV_16UC(n) CV_MAKETYPE(CV_16U,(n))#define CV_16SC1 CV_MAKETYPE(CV_16S,1)#define CV_16SC2 CV_MAKETYPE(CV_16S,2)#define CV_16SC3 CV_MAKETYPE(CV_16S,3)#define CV_16SC4 CV_MAKETYPE(CV_16S,4)#define CV_16SC(n) CV_MAKETYPE(CV_16S,(n))#define CV_32SC1 CV_MAKETYPE(CV_32S,1)#define CV_32SC2 CV_MAKETYPE(CV_32S,2)#define CV_32SC3 CV_MAKETYPE(CV_32S,3)#define CV_32SC4 CV_MAKETYPE(CV_32S,4)#define CV_32SC(n) CV_MAKETYPE(CV_32S,(n))#define CV_32FC1 CV_MAKETYPE(CV_32F,1)#define CV_32FC2 CV_MAKETYPE(CV_32F,2)#define CV_32FC3 CV_MAKETYPE(CV_32F,3)#define CV_32FC4 CV_MAKETYPE(CV_32F,4)#define CV_32FC(n) CV_MAKETYPE(CV_32F,(n))#define CV_64FC1 CV_MAKETYPE(CV_64F,1)#define CV_64FC2 CV_MAKETYPE(CV_64F,2)#define CV_64FC3 CV_MAKETYPE(CV_64F,3)#define CV_64FC4 CV_MAKETYPE(CV_64F,4)#define CV_64FC(n) CV_MAKETYPE(CV_64F,(n))
CV_MAKETYPE(0,1) =0,CV_MAKETYPE(0,2) =8,CV_MAKETYPE(0,3) =16,CV_MAKETYPE(0,4) =24,CV_MAKETYPE(0,5) =32,...
CV_MAKETYPE(1,1) =1,CV_MAKETYPE(1,2) =9,...
CV_MAKETYPE(2,1) =2,CV_MAKETYPE(2,2) =10,...
CV_MAKETYPE(3,1) =3,CV_MAKETYPE(3,2) =11,...
CV_MAKETYPE(4,1) =4,CV_MAKETYPE(4,2) =12,...
CV_MAKETYPE(5,1) =5,CV_MAKETYPE(5,2) =13,…
CV_MAKETYPE(6,1) =6,CV_MAKETYPE(6,2) =14,…
CV_MAKETYPE(7,1) =7,CV_MAKETYPE(7,2) =15,…
即
CV_8UC1 =0,CV_8UC2 =8,CV_8UC3 =16,CV_8UC4 =24,CV_8UC5 =32,…
CV_8SC1 =1,CV_8SC2 =9,…
CV_16UC1=2,CV_16UC2=10,…
CV_16SC1=3,CV_16SC2=11,…
CV_32SC1=4,CV_32SC2=12,…
CV_32FC1=5,CV_32FC2=13,…
CV_64FC1=6,CV_64FC2=14,…
0~7——000~111,8~15——1000~1111,16~23——10000~10111,…低三位的变化对应depth的变化,高位的变化对应通道数cn的变化。
所以,每一种数据类型都用一个唯一的整数来标志,函数通过识别该整数,生成相应数据类型。另外由上述可知,depth用低三位表示,通道数cn最大值为512,0~511,用高9位表示。
- OpenCV小试牛刀1——OPENCV宏
- opencv—图像显示1
- Opencv——Opencv的安装配置
- 初涉opencv——opencv安装问题
- OpenCV学习——永久性配置opencv
- opencv文档——opencv documentation网址
- 【OpenCV】OpenCV配置—VS2012+win8版
- openCV——cvSeq
- Opencv——mask
- 光流法——Opencv
- opencv——convertTo
- OpenCV——素描
- OpenCV——马赛克
- OpenCV——百叶窗
- opencv——卷积
- OpenCV——Skewing
- opencv——simpleblob
- opencv——inRange
- 最长连续回文串(Longest Palindromic Substring)
- Java中用ClassLoader载入各种资源(类、文件、web资源)的方法
- CMake Error: Could not create named generator Visual Studio 11
- [JAVA] WEB开发中显示图片的问题
- Android获取屏幕分辨率及DisplayMetrics简介
- OpenCV小试牛刀1——OPENCV宏
- FLEX错误码列表
- .NET几个重要概念
- 基于内容的图像检索技术(Content-Based Image Retrieval,CBIR)
- 【Android进阶】判断网络连接状态并自动界面跳转
- android获取设备分辨率
- Flex的多级联动功能
- NGUI控件说明(中文) UICamera
- 对对话框之间的信息传递