convert BGRA8 image format to RGB format

Is there a built-in function for conversion of BGRA8 image to RGB image? If there is no available function for the conversion, is there a way to make this conversion?

 Réponse acceptée

Jan
Jan le 12 Oct 2021
Do you have the pixels values as UINT8 array already? Then:
RGB = BGRA8(:, :, [3, 2, 1])

7 commentaires

L
L le 13 Oct 2021
Hello Jan,
Thank you for the response.
I have the vector of BGRA8 data, 1010688x1, uint8.
This is a color image with dimensions 376x672 (height x width) in BGRA8 format.
According to the documentation, this means that each pixel is 32bit sized and contains in order the BLUE, the RED, the GREEN and the ALPHA channel values.
How and when should I apply your statement? I need only the RGB image.
Thank you.
L
L le 13 Oct 2021
Also, I have now a new problem with accessing the structure.
Here is the screenshot. That is the problem here. Yesterday I was able to access the Data field in the Command Window.
What is rossubscriber? What do these show?
methods(sub)
fieldnames(sub)
properties(sub)
L
L le 13 Oct 2021
Hi,
The sub is the rossubcriber. I have subscribed to a ROS topic, and I have received the ROS message with the BGRA8 image in it. The Data field contain the image vector 1010688x1 uint8.
Yesterday I have accessed the field with img=sub.LatestMessage.Data. Now, I have the error.
L
L le 13 Oct 2021
L
L le 13 Oct 2021
I have accessed the field again in the Command Window, but my RGB image is wrong.
Maybe there is a problem with the array conversion?
L
L le 13 Oct 2021
Modifié(e) : L le 13 Oct 2021
The issue with the structure is solved. The solution is to call the receive() function.
But, still there is a problem with the conversion from BGRA8 to RGB.
What can be the problem here?
Here is the screenshot, and the code. The BGRA8 image is 1010688x1 uint8 array.
msg = receive(sub);
img=msg.Data;
outImg = reshape(img, 672, 376, []);
outImg1=permute(outImg, [2 1 3 4]);
rgb=outImg1(:,:,[2 1 3]);
figure, imshow(rgb);

Connectez-vous pour commenter.

Plus de réponses (1)

Cam Salzberger
Cam Salzberger le 13 Oct 2021

0 votes

Since the image data is coming out of a ROS message, you can use the ROS functions to extract the image from it:
Message object - readImage method
Message struct - rosReadImage function
-Cam

Produits

Question posée :

L
L
le 12 Oct 2021

Commenté :

L
L
le 16 Oct 2021

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by