# Store calculation result from RGB in Vec3b into new matrix instead of Mat Object

Hi, I've been learning to work with image processing. I'm trying to access RGB value from a Mat image :

```
Mat picture = imread("picture.png", CV_LOAD_IMAGE_COLOR);
int rows = picture.rows;
int cols = picture.cols;
```

So, I can get these BGR value

```
picture.at<Vec3b>(i, j)[0]
picture.at<Vec3b>(i, j)[1]
picture.at<Vec3b>(i, j)[2]
```

Then I need to multiply each channel value with some values. For example channel B --> [0] :

```
for (int i = 0; i < picture.rows; i++) {
for (int j = 0; j < picture.cols; j++) {
output.at<Vec3b>(i, j)[0] = (picture.at<Vec3b>(i, j)[0] * 0.2) +
(picture.at<Vec3b>(i, j)[1] * 0.3) +
(picture.at<Vec3b>(i, j)[2] * 0.4);
}
}
```

For now, I'm storing the calculation result as a Mat image (output). Is there any other way I can store the result of multiplication (** output.at<Vec3b>(i, j)[0]**) by creating a new matrix instead of store it as Mat object ? Because I need to calculate this value later and store it as matrix instead of Mat will help a lot.