Adding a response text to a color detection code and another color to detect.
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hello, so i have a color detection code which i learned from youtube
I=imread("RGBPlate.JPG");
subplot(2,2,1);
imshow(I);
G=rgb2gray(I);
subplot(2,2,2);
imshow(G);
A = I (:,:,1);
subplot (2,2,3);
imshow (A);
F=imsubtract(A,G);
F = im2bw(F, 0.18);
subplot(2,2,4);
imshow(F)
The photo (RGBPate.JPG)

The output of the code

my code can detect the color Red from the photo.
My question for this code are:
- how do i make it so when the code detects the color red, the command window will show a text that reads "Roses" same goes for other colors. When it detecs blue, the command window will show a text that reads "Anemone" and etc.
- From what i know
A = I (:,:,1);
can detect colors Red, Green, Blue from changing the numbers from 1,2,3 respectively. What is the proper code for detecting the color black?
I am currently using the lastest Matlab which is R2021b
Thank you for taking the time to read this post.
1 Kommentar
Akzeptierte Antwort
DGM
am 11 Jan. 2022
Bearbeitet: DGM
am 11 Jan. 2022
In order to be able to say that a color is (e.g.) "aquamarine" or "turquoise" or some particular name, you need to define explicitly what those words mean in some color space and then find the closest named color by minimizing some distance metric between the named colors and your color tuple of interest.
Or you could just use something like this to convert between RGB tuples and the color names defined by a selected palette.
colornames('css',parula(8))
ans =
8×1 cell array
{'MediumBlue' }
{'MediumSlateBlue' }
{'DodgerBlue' }
{'SkyBlue' }
{'MediumAquamarine'}
{'YellowGreen' }
{'Goldenrod' }
{'Yellow' }
colornames('natural',jet(8))
ans =
8×1 cell array
{'Blue' }
{'Blue' }
{'Green' }
{'Green' }
{'Yellow'}
{'Yellow'}
{'Red' }
{'Red' }
You'll have to read the documentation, as there are multiple palettes available and different ways of calculating color differences. See the included tool colornames_deltaE().
If you want to detect black using what you've already calculated, just perform a thresholding operation on the grayscale array itself. You'll have to decide what an appropriate threshold would be.
blackregions = G<thresholdvalue;
0 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Data Distribution Plots finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!