# Normalize a matrix with opencv.js

**URL:** <https://forum.opencv.org/t/normalize-a-matrix-with-opencv-js/7156>\
**Category:** C++\
**Tags:** opencvjs\
**Created:** [January 16, 2022, 7:58pm UTC](https://forum.opencv.org/t/normalize-a-matrix-with-opencv-js/7156 "2022-01-16T19:58:12Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![flexeo](https://avatars.discourse-cdn.com/v4/letter/f/977dab/32.png) [@flexeo](https://forum.opencv.org/u/flexeo)\
**Post date:** [January 16, 2022, 7:58pm UTC](https://forum.opencv.org/t/normalize-a-matrix-with-opencv-js/7156/1 "2022-01-16T19:58:12Z")

</div>

I want to normalize a Mat object using the native methods of opencv.js.

I have tried with “ **cv.multiply** ” or “ **cv.gemm** ” but I don’t know how to use them properly with CV\_32FC1 matrix.

In the meantime I use a loop to apply normalization to each pixel value but it seems poorly optimized.

How to properly use “cv.multiply”, “cv.gemm” or other method to replace unsupported arithmetic operators in JavaScript with opencv.js?

In C++:

```auto
double maxVal;
minMaxLoc(mat, NULL, &maxVal);
mat = 128 * mat / maxVal;

```

In JavaScript (but not optimized):

```auto
let maxVal = cv.minMaxLoc(mat).maxVal;
for (let i = 0; i < mat.rows; i++) {
	for (let j = 0; j < mat.cols; j++) {
		mat.floatPtr(i, j)[0] = 128 * mat.floatPtr(i, j)[0] / maxVal;
	}
}

```

---

<div class="post-metadata">

**Author:** ![berak](https://avatars.discourse-cdn.com/v4/letter/b/85f322/32.png) [@berak](https://forum.opencv.org/u/berak)\
**Post date:** [January 17, 2022, 8:50am UTC](https://forum.opencv.org/t/normalize-a-matrix-with-opencv-js/7156/2 "2022-01-17T08:50:35Z")

</div>

use [normalize](https://github.com/opencv/opencv/tree/4.x/samples/android/face-detection/res/raw) with NORM\_MINMAX
