首页 > 其他 > 详细

opencv-03--图像的算术运算

时间:2014-03-12 05:43:06      阅读:477      评论:0      收藏:0      [点我收藏+]

图像的算术运算

Mat类把很多算数操作符都进行了重载,让它们来符合矩阵的一些运算,如果+、-、点乘等。

下面我们来看看用位操作和基本算术运算来完成colorReduce程序,它更简单,更高效。

将256种灰度阶降到64位其实是抛弃了二进制最后面的4位,所以我们可以用位操作来做这一步处理。

首先我们计算2^8降到2^n中的n:

int n=static_cast<int>(log(static_cast<double>(div))/log(2.0));

然后可以得到mask

mask=0xFF<<n;

用下面简直的语句就可以得到我们想要的结果:

result=( image & Scalar(mask,mask,mask) ) + Scalar(div/2, div/2, div/2);

 

很多时候我们需要对图像的一个通信单独进行操作,比如在HSV色彩模式下,我们就经常把3个通道分开考虑。

bubuko.com,布布扣
vector<Mat> planes;

// 将image分为三个通道图像存储在planes中

split(image,planes);

planes[0]+=image2;

// 将planes中三幅图像合为一个三通道图像

merge(planes,result);
bubuko.com,布布扣

 

opencv-03--图像的算术运算,布布扣,bubuko.com

opencv-03--图像的算术运算

原文:http://www.cnblogs.com/wjgaas/p/3594089.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!