OpenCV1.x中的宏定义CV_IS_MAT_CONT(src->type & dst->type) 的含义

图像处理开发需求、图像处理接私活挣零花钱,请加微信/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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值