В этой главе мы повышаем яркость изображения, умножая каждый пиксель изображения на альфа-значение и добавляя к нему еще одно бета-значение.
У OpenCV есть функция convertTo, которая выполняет вышеуказанную операцию автоматически. Его можно найти под пакетом Mat . Его синтаксис приведен ниже —
int alpha = 2; int beta = 50; sourceImage.convertTo(destination, rtype , alpha, beta);
Параметры описаны ниже —
Sr.No. | Параметр и описание |
---|---|
1 |
место назначения Это изображение назначения. |
2 |
RTYPE Это желаемый тип выходной матрицы или, скорее, глубина, так как количество каналов совпадает с входным. если rtype отрицателен, выходная матрица будет иметь тот же тип, что и входная. |
3 |
альфа Это необязательный масштабный коэффициент. |
4 |
бета Это необязательная дельта, добавленная к масштабированным значениям. |
место назначения
Это изображение назначения.
RTYPE
Это желаемый тип выходной матрицы или, скорее, глубина, так как количество каналов совпадает с входным. если rtype отрицателен, выходная матрица будет иметь тот же тип, что и входная.
альфа
Это необязательный масштабный коэффициент.
бета
Это необязательная дельта, добавленная к масштабированным значениям.
Помимо метода convertTo, есть класс, предоставленный классом Mat. Они описаны кратко —
Sr.No. | Метод и описание |
---|---|
1 |
AdjustROI (int dtop, int dbottom, int dleft, int dright) Он регулирует размер и положение подматрицы в родительской матрице. |
2 |
copyTo (Mat m) Копирует матрицу в другую. |
3 |
Diag () Он извлекает диагональ из матрицы или создает диагональную матрицу. |
4 |
точка (мат м) Он вычисляет скалярное произведение двух векторов. |
5 |
изменить (int cn) Он изменяет форму и / или количество каналов 2D-матрицы без копирования данных. |
6 |
submat (Range rowRange, Range colRange) Извлекает прямоугольную подматрицу. |
AdjustROI (int dtop, int dbottom, int dleft, int dright)
Он регулирует размер и положение подматрицы в родительской матрице.
copyTo (Mat m)
Копирует матрицу в другую.
Diag ()
Он извлекает диагональ из матрицы или создает диагональную матрицу.
точка (мат м)
Он вычисляет скалярное произведение двух векторов.
изменить (int cn)
Он изменяет форму и / или количество каналов 2D-матрицы без копирования данных.
submat (Range rowRange, Range colRange)
Извлекает прямоугольную подматрицу.
пример
В следующем примере демонстрируется использование класса Mat для повышения яркости изображения.
import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.highgui.Highgui; public class Main { static int width; static int height; static double alpha = 2; static double beta = 50; public static void main( String[] args ) { try{ System.loadLibrary( Core.NATIVE_LIBRARY_NAME ); Mat source = Highgui.imread("digital_image_processing.jpg",Highgui.CV_LOAD_IMAGE_COLOR); Mat destination = new Mat(source.rows(),source.cols(), source.type()); source.convertTo(destination, -1, alpha, beta); Highgui.imwrite("brightWithAlpha2Beta50.jpg", destination); } catch (Exception e) { System.out.println("error:" + e.getMessage()); } } }
Выход
Когда вы выполняете данный код, вы увидите следующий вывод: