#javascript #opencv #image-processing
#javascript #opencv #обработка изображений
Вопрос:
Я нашел способ сделать это, но он очень тяжелый и все запаздывает (в основном потому, что я воссоздаю мат попиксельно).
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:
Просто следуйте руководству по OpenCV: изменение контрастности и яркости изображения!
Преобразует масштаб (src, dst, alpha, beta)
Масштабирует, вычисляет абсолютные значения и преобразует результат в 8-битный.
Для каждого элемента входного массива функция convertScaleAbs последовательно выполняет три операции: масштабирование, получение абсолютного значения, преобразование в 8-разрядный тип без знака
Параметры:
входной массив src
выходной массив dst
альфа необязательный масштабный коэффициент
бета-необязательная дельта, добавленная к масштабированным значениям
Комментарии:
1. @Val_ для convertScaleAbs есть привязка JS. Смотрите github.com/ucisysarch/opencvjs /…