Как увеличить яркость с OpenCV.js? - PullRequest
0 голосов
/ 21 марта 2019

Я нашел способ сделать это, но он очень тяжелый и делает все медленным (в основном из-за того, что я воссоздаю мат за пикселем).

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 Ответ

1 голос
/ 21 марта 2019

Просто следуйте Учебник OpenCV: Изменение контрастности и яркости изображения!

convertScaleAbs (src, dst, alpha, beta)

Масштабирует, вычисляет абсолютные значения и преобразует результат в 8-разрядный.

Для каждого элемента входного массива функция convertScaleAbs выполняет три операции последовательно: масштабирование, принимая абсолютный значение, преобразование в 8-битный тип без знака

Параметры:

входной массив src

массив вывода dst

альфа необязательный масштабный коэффициент

бета необязательная дельта, добавленная к масштабированным значениям

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...