How can I change the line color in the output of imhist?

 Réponse acceptée

Image Analyst
Image Analyst le 15 Août 2017
Modifié(e) : Image Analyst le 15 Août 2017
For precise control, plot it yourself with bar() and then set the 'EdgeColor' and 'FaceColor' properties in the bar() function:
img = imread('moon.tif');
[counts, grayLevels] = imhist(img, 64);
bar(grayLevels, counts, 'EdgeColor', 'r', 'FaceColor', 'c', 'BarWidth', 0.95);
Makes cyan bars with red outlines.

6 commentaires

This works fine. But is it possible to change the colour in original imhist output without the use of 'bar'..
imhist() does not allow any inputs that will vary the color of the lines.
okay,thanks a lot
Suresh, I gave you a way as an answer, by using findobj.
But the output I am getting for findobj() is a zero matrix.. >> myhist=findobj(gca,'Type','Stem')
myhist =
Empty matrix: 0-by-1
This worked for me:
img = imread('moon.tif');
imhist(img, 64);
myHist = findobj(gca, 'Type', 'Stem');
% Change the color to red
myHist.Color = [1 0 0]
but Suresh was wondering if it could all be done inside imhist() without a separate call to bar(), or to findobj() and myHist.Color.
Personally, I like the wider bars created by bar() rather than the single pixel wide lines by imhist's build in stem display.

Connectez-vous pour commenter.

Plus de réponses (1)

The histogram is a 'Stem' element. Use findobj to access its properties:
imhist(myImage);
myHist = findobj(gca, 'Type', 'Stem');
% Change the color to red
myHist.Color = [1 0 0]
If you use an older version of Matlab, you can replace the last line by:
% Change the color to red
set(myHist, 'Color', [1 0 0]);
Good luck!

Catégories

En savoir plus sur Creating, Deleting, and Querying Graphics Objects dans Centre d'aide et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by