# How to convert Image RAW10 format to cv::Mat

**URL:** <https://forum.opencv.org/t/how-to-convert-image-raw10-format-to-cv-mat/9859>\
**Category:** C++\
**Tags:** videoio\
**Created:** [August 16, 2022, 6:32am UTC](https://forum.opencv.org/t/how-to-convert-image-raw10-format-to-cv-mat/9859 "2022-08-16T06:32:36Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![ZeosBios](https://avatars.discourse-cdn.com/v4/letter/z/2acd7d/32.png) [@ZeosBios](https://forum.opencv.org/u/ZeosBios)\
**Post date:** [August 16, 2022, 6:32am UTC](https://forum.opencv.org/t/how-to-convert-image-raw10-format-to-cv-mat/9859/1 "2022-08-16T06:32:37Z")

</div>

I’m trying to convert Image [RAW10](https://developer.android.com/reference/android/graphics/ImageFormat#RAW10).

```auto
void ConvertToMat(unsigned char * buffer, unsigned int width, unsigned int height) {
        cv::Mat rgb;
        cv::Mat raw10Img(image.height, image.width, CV_16SC1, image.buffer);

        cv::cvtColor(raw10Img, rgb, cv::COLOR_BayerRG2RGB);
        cv::imwrite("myimage.png", rgb);
}

```

I get error:

```auto
Streaming ERROR : OpenCV(4.5.1) /home/opencv_build/opencv/modules/imgproc/src/demosaicing.cpp:1691: error: (-215:Assertion failed) depth == CV_8U || depth == CV_16U in function 'demosaicing'

```

---

<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:** [August 16, 2022, 6:56am UTC](https://forum.opencv.org/t/how-to-convert-image-raw10-format-to-cv-mat/9859/2 "2022-08-16T06:56:24Z")

</div>

wild guess:

`cv::Mat raw10Img(image.height, image.width, CV_16UC1, image.buffer);`

(_unsigned_ short)

---

<div class="post-metadata">

**Author:** ![ZeosBios](https://avatars.discourse-cdn.com/v4/letter/z/2acd7d/32.png) [@ZeosBios](https://forum.opencv.org/u/ZeosBios)\
**Post date:** [August 16, 2022, 7:17am UTC](https://forum.opencv.org/t/how-to-convert-image-raw10-format-to-cv-mat/9859/3 "2022-08-16T07:17:55Z")

</div>

Ok, thank you. I stopped get error, but in output image it is gray square.

```auto
        cv::Mat rgb;
        cv::Mat raw10Img(image.height, image.width, CV_16UC1, image.buffer);

        cv::cvtColor(raw10Img, rgb, cv::COLOR_BayerRG2RGB);
        cv::imwrite("myimage.png", raw10Img);

```

From web-camera API:

> Callback will be used to provide RGB preview image

I’ll take that as “API return raw data in RGB format”, but code bellow don’t work:  
`cv::Mat raw10Img(image.height, image.width, CV_8UC3, image.buffer);`

---

<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:** [August 16, 2022, 7:23am UTC](https://forum.opencv.org/t/how-to-convert-image-raw10-format-to-cv-mat/9859/4 "2022-08-16T07:23:19Z")

</div>

> [@ZeosBios](#):
>
> `cv::imwrite("myimage.png", raw10Img);`

typo, you wanted:

`cv::imwrite("myimage.png", rgb); // not raw10Img`

please also note, that opencv uses BGR pixel order, so your saved image will have R and B swapped

---

<div class="post-metadata">

**Author:** ![ZeosBios](https://avatars.discourse-cdn.com/v4/letter/z/2acd7d/32.png) [@ZeosBios](https://forum.opencv.org/u/ZeosBios)\
**Post date:** [August 16, 2022, 7:29am UTC](https://forum.opencv.org/t/how-to-convert-image-raw10-format-to-cv-mat/9859/5 "2022-08-16T07:29:21Z")

</div>

Oh, yes, of course, you right, sorry. But after correct I get gray square:  
`cv::imwrite("myimage.png", rgb);`

_\> please also note, that opencv uses BGR pixel order, so your saved image will have R and B swapped_  
What is means?

---

<div class="post-metadata">

**Author:** ![ZeosBios](https://avatars.discourse-cdn.com/v4/letter/z/2acd7d/32.png) [@ZeosBios](https://forum.opencv.org/u/ZeosBios)\
**Post date:** [August 16, 2022, 9:15am UTC](https://forum.opencv.org/t/how-to-convert-image-raw10-format-to-cv-mat/9859/6 "2022-08-16T09:15:04Z")

</div>

This code:

```auto
        cv::Mat rgb;
        cv::Mat raw10Img(image.height, image.width, CV_8UC3, image.buffer);

        cv::cvtColor(raw10Img, rgb, cv::COLOR_BGR2RGB);
        cv::imwrite("myimage.png", rgb);

```

also don’t work

---

<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:** [August 16, 2022, 10:31am UTC](https://forum.opencv.org/t/how-to-convert-image-raw10-format-to-cv-mat/9859/7 "2022-08-16T10:31:26Z")

</div>

^^ that’#s all broken.

can you save a buffer as 16bit png, and upload it here, please ?

```auto
cv::Mat raw10Img(image.height, image.width, CV_16U, image.buffer);
cv::imwrite("myimage.png", raw10Img);

```
