I want to draw a circle in this 500x500 black matrix, but it deos not appear idk
here is the code
E = zeros(500,500);
E2 = insertShape(E, 'Circle',[250 250 100], ...
'Color','white', 'LineWidth',5);
figure(5),imshow(uint8(E2));

 Akzeptierte Antwort

Voss
Voss am 6 Mär. 2022

1 Stimme

E = zeros(500,500);
E2 = insertShape(E, 'Circle',[250 250 100], ...
'Color','white', 'LineWidth',5);
figure(5);
% imshow(uint8(255*E2));
% or:
imshow(E2);

4 Kommentare

Maha Almuaikel
Maha Almuaikel am 6 Mär. 2022
Can I ask you why did you delete uint8?
Voss
Voss am 6 Mär. 2022
E2 is a double matrix with values between 0 and 1.
uint8(E2) gives you a uint8 matrix with values between 0 and 1.
uint8([0 0 0]) is black, and uint8([1 1 1]) is very close to black.
uint8([255 255 255]) is white, which is what you want, so either multiply by 255 before doing uint8() (so that 0 goes to 0 and 1 goes to 255) or just use the double values (between 0 and 1) as they already are.
Do you need double? You just cast the whole thing to double at the end, so why didn't you like my solution where I just start out with the matrix being double right from the start, thus avoiding the need to cast it to double?
Or you can leave it as double - don't cast to uint8 - and it works fine:
E = zeros(500,500);
E2 = insertShape(E, 'Circle',[250 250 100], ...
'Color','white', 'LineWidth',5);
figure(5),imshow(E2);
Maha Almuaikel
Maha Almuaikel am 6 Mär. 2022
@_ @Image Analyst Thank you! got it

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Image Analyst
Image Analyst am 6 Mär. 2022

1 Stimme

Try this:
E = zeros(500,500, 'uint8'); % Make image as uint8 right from the beginning.
E2 = insertShape(E, 'Circle', [250 250 100], ...
'Color','white', 'LineWidth',5);
imshow(E2, []); % Display it with [] to expand the contrast.

Kategorien

Mehr zu Read, Write, and Modify Image finden Sie in Hilfe-Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by