Matlab图像剪切,超出图像区域指定颜色填充

Matlab图像剪切,超出图像区域指定颜色填充

尊重原创,转载请注明出处】http://blog.csdn.net/guyuealian/article/details/77507969
   Matlab自带图像剪切(裁剪)函数,即imcrop函数,但该函数对于超出图像边界区域是停止裁剪的,即对超出图像边界的部分不作裁剪处理。正常情况下,imcrop函数足够使用了。但有时,我们希望对于超出图像边界的区域,可以指定颜色填充,以便我们可以观察裁剪情况。
   若想在OpenCV中实现图像剪切,对超出图像区域指定颜色填充,可参考本人的博客:http://blog.csdn.net/guyuealian/article/details/77486096
   本人实现方法如下
function destImg=ImageCropPadding(gray_img,rect,paddingValue)
% ImageCropPadding函数功能说明:
% 该函数可实现根据rect(x,y,w,h)剪切指定的灰度图像,若剪切超出图像边界,则用paddingValue的值填充
% 输入参数:gray_img:必须输入灰度图像,暂时不支持RGB图像;
%              rect:指定剪切区域,类似于Matlab的imcrop函数用法
%      paddingValue:填充值(1-255)
%% For Example:
%  SrcImage=imread('images/liuyifei.jpg');
%  grabImage=rgb2gray(SrcImage);
%  figure,imshow(grabImage),title('grabImage');
%  rect=[-50,-50,500,500];
%  paddingValue=1;
%  destImg=ImageCropPadding(SrcImage,rect,paddingValue);
%  figure,imshow(destImg),title('destImg');
%%
x=rect(1);
y=rect(2);
w=rect(3);
h=rect(4);
destImg = im2uint8(zeros(h, w)+paddingValue/255); 
crop_x1 = max(1, x);
crop_y1 = max(1, y);
[rows,cols]=size(gray_img);
crop_x2 = min(cols, x + w); 
crop_y2 = min(rows, y + h);
roi_img = gray_img(crop_y1:crop_y2,crop_x1:crop_x2);
x1 = crop_x1 - x+1;
y1 = crop_y1 - y+1;
x2 = crop_x2 - x+1;
y2 = crop_y2 - y+1;
% I(y1:y2, x1:x2 ) = I(y1:y2 , x1:x2) + roi_img;
destImg(y1:y2, x1:x2 ) =  roi_img;
end
   调用方法:
SrcImage=imread('images/liuyifei.jpg');
grabImage=rgb2gray(SrcImage);
figure,imshow(grabImage),title('grabImage');
rect=[-50,-50,500,500];
paddingValue=1;%黑色填充
destImg=ImageCropPadding(SrcImage,rect,paddingValue);
figure,imshow(destImg),title('destImg');
运行效果:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI吃大瓜

尊重原创,感谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值