OpenCV学习之路(七) 遍历图像中的像素

官方文档

若矩阵元素存储的是单通道像素,使用 C 或 C++ 无符号字符类型(uchar),那么像素可有 256 个不同的取值(0 ~255)。若图像采用三通道存储,颜色可有一千六百多万中取值(0 ~ 2^{24}-1),如此之多的颜色可能会对我们的算法性能造成影响。我们可以使用其中具有代表性的一部分来达到与原来近似的效果,即颜色空间缩减,做法是:将颜色值 0~9 映射为 0,10~19映射为10,等等。这样做可将颜色取值降低到 26 * 26 * 26 种。

由此,在处理较大的图像时,我们可以预先计算出所有可能的像素取值,将其存入一个 table 中,之后可以使用查表法来进行赋值(随机存取)。

//查找表设置
int divideWith = 10;
uchar table[256];
for(int i = 0; i < 256; ++i)
    table[i] = divideWith * (i / divideWith);


//遍历图像对每个像素赋新值
p[j] = table[p[j]];

1. LUT 函数:Look up table 操作。OpenCV官方提供的函数,原型为:

void LUT(InputArray src, InputArray lut, OutputArray dst);

(1)第一个参数,InputArray 类型的 src,输入图像。

(2)第二个参数,InputArray 类型的 lut,查找表。

(3)第三个参数,OutputArray 类型的 dst,输出图像。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值