[已解决] 如何在灰度图像内画圆

[复制链接]
无面人 发表于 2021-1-11 11:21:22
确定了圆中心以及半径,想在图像中心显示一个圆,不知道哪里出了问题,图像没变,求大神解惑.
clear
A=imread('1.png');
figure(1),imshow(A)
[a,b,c]=size(A);
x=a/2;y=b/2;
R=50;
for i=1:a
    for j=1:b
        if ((x-i)^2)+((y-j)^2)==R^2
            A(i,j)=255;
        end
    end
end
figure(2),imshow(A)



1.png
1.png

最佳答案


SmartGridequatn 发表于 2021-1-11 16:17:56
先新建drawRectangleFrame.m文件
代码如下
  1. function [drawRectangleImage] = drawRectangleFrame(image,windowLocation,windowSize)
  2. [row,col] = size(image); % 输入图像尺寸
  3. x = windowLocation(1);%矩形框位置坐标,其格式为[x,y]
  4. y = windowLocation(2);
  5. height = windowSize(1);%矩形框尺寸,其格式为[height,width],即[高度,宽度]
  6. width = windowSize(2);
  7. if((x<=row && y<=col)&&(height<=row && width<=col))
  8.     disp('圆形框合法!');
  9.     figure;imshow(image);
  10.     hold on
  11. %    drawRectangleImage = rectangle('Position',[y-width,x-height,width,height],'LineWidth',4,'EdgeColor','r');
  12.     r = 50;%半径
  13. %    a = 200;%横坐标
  14. %    b = 200;%纵坐标
  15.     para = [x-r, y-r, 2*r, 2*r];
  16.     drawRectangleImage = rectangle('Position', para, 'Curvature', [1 1]);
  17.     hold off
  18. else
  19.     disp('圆形框不合法!');
  20. end
复制代码
再新建draw_pics.m文件
代码如下
  1. clear;close all;clc
  2. I = imread('灰度图像内画圆测试图.JPG');
  3. [row,col,n] = size(I); % 输入图像尺寸
  4. row
  5. col
  6. n
  7. II = rgb2gray(I);
  8. III = drawRectangleFrame(II,[230,280],[row,col]);
  9. %figure();
  10. %imshow(III);
复制代码
在该目录运行draw_pics.m文件
效果见附录
回复此楼

2 条回复


SmartGridequatn 发表于 2021-1-11 16:17:56
先新建drawRectangleFrame.m文件
代码如下
  1. function [drawRectangleImage] = drawRectangleFrame(image,windowLocation,windowSize)
  2. [row,col] = size(image); % 输入图像尺寸
  3. x = windowLocation(1);%矩形框位置坐标,其格式为[x,y]
  4. y = windowLocation(2);
  5. height = windowSize(1);%矩形框尺寸,其格式为[height,width],即[高度,宽度]
  6. width = windowSize(2);
  7. if((x<=row && y<=col)&&(height<=row && width<=col))
  8.     disp('圆形框合法!');
  9.     figure;imshow(image);
  10.     hold on
  11. %    drawRectangleImage = rectangle('Position',[y-width,x-height,width,height],'LineWidth',4,'EdgeColor','r');
  12.     r = 50;%半径
  13. %    a = 200;%横坐标
  14. %    b = 200;%纵坐标
  15.     para = [x-r, y-r, 2*r, 2*r];
  16.     drawRectangleImage = rectangle('Position', para, 'Curvature', [1 1]);
  17.     hold off
  18. else
  19.     disp('圆形框不合法!');
  20. end
复制代码
再新建draw_pics.m文件
代码如下
  1. clear;close all;clc
  2. I = imread('灰度图像内画圆测试图.JPG');
  3. [row,col,n] = size(I); % 输入图像尺寸
  4. row
  5. col
  6. n
  7. II = rgb2gray(I);
  8. III = drawRectangleFrame(II,[230,280],[row,col]);
  9. %figure();
  10. %imshow(III);
复制代码
在该目录运行draw_pics.m文件
效果见附录

已经画好的圆圈图

已经画好的圆圈图
回复此楼

无面人 发表于 2021-1-12 10:06:38
SmartGridequatn 发表于 2021-1-11 16:17
先新建drawRectangleFrame.m文件
代码如下再新建draw_pics.m文件
代码如下

非常感谢,大佬牛批。这个m文件太顶了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
热门教程
站长推荐
快速回复 返回顶部 返回列表