如何使用OpenCV.js增加亮度?

时间:2019-03-21 10:04:52

标签: javascript opencv image-processing

找到了一种方法,但是它很沉重,使所有内容都变得迟钝(主要是因为我要逐像素重新创建垫子)。

for (let x = 0; x < src.cols; x++) {
for (let y = 0; y < src.rows; y++) {
  for (let c = 0; c < 4; c++) {
    if(c != 3){
      if((src.data[y * src.cols * src.channels() + x * src.channels() + c]+lum_val) < 255){
          dst.data[y * dst.cols * dst.channels() + x * dst.channels() + c] = (src.data[y * src.cols * src.channels() + x * src.channels() + c]+lum_val);
        }else{
          dst.data[y * dst.cols * dst.channels() + x * dst.channels() + c] = 255;
        }
      }else{
        dst.data[y * dst.cols * dst.channels() + x * dst.channels() + c] = (src.data[y * src.cols * src.channels() + x * src.channels() + c]);
      }
    }
  }
}

是否有一个功能可以更有效地执行相同的操作?还是更简单的方法会导致相同的结果?

1 个答案:

答案 0 :(得分:1)

只需遵循OpenCV Tutorial: Changing the contrast and brightness of an image!

convertScaleAbs(src, dst, alpha, beta)

  

缩放,计算绝对值并将结果转换为8位。

     

在输入数组的每个元素上,函数convertScaleAbs   按顺序执行三个操作:缩放,绝对   值,转换为无符号的8位类型

     

参数:

     

src输入数组

     

dst输出数组

     

alpha可选比例因子

     

将beta可选增量添加到缩放值