利用matlab,怎样在RGB彩图截取某个特定位置圆形区域(注意,不是定位和识别圆)?已知圆心和半径,
我知道百度知道中有个这样代码,但我尝试了一些,只能对二值图,程序运行错误
可能我理解错误
[x,y]=size(m); %m为原图
[X,Y]=meshgrid(x,y);
m1=m.*((X^2+Y^2)<=r^2) %m1是选择的部分 展开
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' );% 截图可以保存
很感谢,刚试了,结果和你所说一样,
那能不能把椭圆外面的黑色去掉,只要椭圆中图像,(即图像形状就是个椭圆)
或者把椭圆外边改为白色也行,感激不尽。