draw circle on image

11 ビュー (過去 30 日間)
sangeeta
sangeeta 2013 年 3 月 18 日
コメント済み: Image Analyst 2021 年 6 月 22 日
I want to draw a circle with centre at centre of given image. Image get displayed but circle is missing. Without using hold on/off, a separate figure window shows circle, but i want the circle on the image. Plz correct the following code.
imshow(PICpng);
centx = x / 2;
centy = y / 2;
r = 10;
hold on;
theta = 0 : (2 * pi / 10000) : (2 * pi);
pline_x = r * cos(theta) + centx;
pline_y = r * sin(theta) + centy;
k = ishold;
plot(pline_x, pline_y, '*');
hold off;
  5 件のコメント
sangeeta
sangeeta 2013 年 3 月 21 日
ok, Thanks Spandan
Image Analyst
Image Analyst 2013 年 3 月 21 日
編集済み: Image Analyst 2013 年 3 月 21 日
Spandan, does the help's "See also" connect to other toolboxes? If so, then the help for rectangle(), which people usually use to draw circles, should mention viscircle().

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

採用された回答

Image Analyst
Image Analyst 2013 年 3 月 18 日
It was working. Your x and y were probably messed up. Try this:
PICpng = imread('peppers.png');
[rows columns numberOfColorChannels] = size(PICpng)
x = columns/2
y = rows/2
imshow(PICpng);
centx = x / 2;
centy = y / 2;
r = 60;
hold on;
theta = 0 : (2 * pi / 10000) : (2 * pi);
pline_x = r * cos(theta) + centx;
pline_y = r * sin(theta) + centy;
k = ishold;
plot(pline_x, pline_y, 'r-', 'LineWidth', 3);
hold off;
  10 件のコメント
Walter Roberson
Walter Roberson 2021 年 6 月 21 日
Image Analyst
Image Analyst 2021 年 6 月 22 日
Once you have a mask for the inside the red circle (call poly2mask() if you need to), you can do
pixelsInside = binaryImage(circleMask);
if all(pixelsInside)
% All values in mask are true/white/1
else
% At least one pixel is false/black/0.
end

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

その他の回答 (1 件)

Muhammad Nauman Arshad
Muhammad Nauman Arshad 2020 年 2 月 19 日
ICpng = imread('peppers.png');
[rows columns numberOfColorChannels] = size(PICpng)
x = columns/2
y = rows/2
imshow(PICpng);
centx = x / 2;
centy = y / 2;
r = 60;
hold on;
theta = 0 : (2 * pi / 10000) : (2 * pi);
pline_x = r * cos(theta) + centx;
pline_y = r * sin(theta) + centy;
k = ishold;
plot(pline_x, pline_y, 'r-', 'LineWidth', 3);
hold off;

カテゴリ

Help Center および File ExchangeParticle & Nuclear Physics についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by