1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Matlab图像剪切 超出图像区域指定颜色填充

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

时间:2020-07-17 16:59:43

相关推荐

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

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

【尊重原创,转载请注明出处】/guyuealian/article/details/77507969

Matlab自带图像剪切(裁剪)函数,即imcrop函数,但该函数对于超出图像边界区域是停止裁剪的,即对超出图像边界的部分不作裁剪处理。正常情况下,imcrop函数足够使用了。但有时,我们希望对于超出图像边界的区域,可以指定颜色填充,以便我们可以观察裁剪情况。

若想在OpenCV中实现图像剪切,对超出图像区域指定颜色填充,可参考本人的博客:/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');

运行效果:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。