图像处理开发需求、图像处理接私活挣零花钱,请加微信/QQ 2487872782
图像处理开发资料、图像处理技术交流请加QQ群,群号 271891601
CV_IS_MAT_CONT翻译成英文就是 Is MAT continuous?
翻译成中文就是说咱们的MAT(实际上是指咱们的图像矩阵)是否为连续存储的!
问:啥为图像连续存储?
就是满足条件 width×sizeof(elem)=stride
那么CV_IS_MAT_CONT是怎么样实现这个判断的呢?看了下面三行宏定义应该就知道了。
#define CV_IS_MAT_CONT(flags) ((flags) & CV_MAT_CONT_FLAG)
#define CV_MAT_CONT_FLAG (1 << CV_MAT_CONT_FLAG_SHIFT)
#define CV_MAT_CONT_FLAG_SHIFT 1
通过上面的宏定义可以看出,宏定义CV_IS_MAT_CONT实际上是把CvMat对象中的type的第14位抽出来看看是否为1,为1就说明是连续的!记住CONT是 continuous的缩写!
举个使用的例子吧:
//reshape if possible //重新定义阵列的形状
if( CV_IS_MAT_CONT(src->type & dst->type) )
{
size.width *= size.height;
size.height = 1;
}
问,这样写有什么用?答:将二维矩阵转化为一维向量,既便于代码书写,也有利于提高程序运行效率。
图像处理开发需求、图像处理接私活挣零花钱,请加微信/QQ 2487872782
图像处理开发资料、图像处理技术交流请加QQ群,群号 271891601