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));

 採用された回答

Voss
Voss 2022 年 3 月 6 日

1 投票

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 件のコメント

Maha Almuaikel
Maha Almuaikel 2022 年 3 月 6 日
Can I ask you why did you delete uint8?
Voss
Voss 2022 年 3 月 6 日
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.
Image Analyst
Image Analyst 2022 年 3 月 6 日
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 2022 年 3 月 6 日
@_ @Image Analyst Thank you! got it

サインインしてコメントする。

その他の回答 (1 件)

Image Analyst
Image Analyst 2022 年 3 月 6 日

1 投票

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.

カテゴリ

ヘルプ センター および File ExchangeRead, Write, and Modify Image についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by