利用matlab,怎样在RGB彩图截取某个特定位置圆形区域(注意,不是定位和识别圆)?已知圆心和半径,

例如,我用plot函数在图像上框定了某个位置(圆心,半径已知),我知道可以用imcrop函数剪切矩形区域,但圆形区域呢?最好椭圆形也说一下,(要求提供matlab代码,以... 例如,我用 plot 函数在图像上框定了某个位置(圆心,半径已知),我知道可以用imcrop函数剪切矩形区域,但圆形区域呢?最好椭圆形也说一下,(要求提供matlab代码,以及相关解释)
我知道百度知道中有个这样代码,但我尝试了一些,只能对二值图,程序运行错误
可能我理解错误
[x,y]=size(m); %m为原图
[X,Y]=meshgrid(x,y);
m1=m.*((X^2+Y^2)<=r^2) %m1是选择的部分
展开
 我来答
百度网友1c6e06f
2014-05-19 · TA获得超过2893个赞
知道小有建树答主
回答量:695
采纳率:66%
帮助的人:648万
展开全部

figure( 1 );
img = imread( 'D:\TDDOWNLOAD\Kindle Book\封面图片\23174533-1_u_1.jpg' );
imshow( img );


% 使用椭圆在figure上创建一个椭圆,这四个数决定你截图的位置和大小
% [ 椭圆外接矩形的左上角x, 左上角y, 宽,长 ]
% 这个椭圆在figure上可以拖拽
h = imellipse( gca, [ 150, 150, 300, 500 ] );


% 把这个椭圆转为一个和img同样大小的二值图,1表示椭圆内部,0表示外部
BW = createMask( h );


% 根据二值图构建截图,椭圆外的都染黑
[ w, h, d3 ] = size( img );
newimg = zeros( w, h, d3, 'uint8' );
for i = 1 : d3
    band = img( :, :, i );
    newband = zeros( w, h, 'uint8' );
    newband( BW ) = band( BW );
    newimg( :, :, i ) = newband;
end


figure( 2 );
imshow( newimg );
% imwrite( 'D:\newimg.jpg' );% 截图可以保存


追问
很感谢,刚试了,结果和你所说一样,
那能不能把椭圆外面的黑色去掉,只要椭圆中图像,(即图像形状就是个椭圆)
或者把椭圆外边改为白色也行,感激不尽。
追答

那就在figure(2)之前一行:

newimg = newimg( 150 : 650, 150 : 450, : );

因为椭圆外接矩形长是500像素,所以行号是从150到650,列号类似。


顶多就是把椭圆的外接矩形区域抠出来,因为图像必须是方的。

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式