【Matlab图片剪裁】

标题Matlab剪裁图片,提取感兴趣部分

问题描述

当需要从一幅图片中提取一些感兴趣的内容时,比如一些细小的文字、图案等,如果从整个图片中直接提取,必然会大大增加计算量,导致处理时间很长,而且多数计算都是无效计算,进而非常消耗资源…

解决办法

从原始图片中剪裁出包含目标信息的区域,使得区域尽可能小,背景尽可能单一,这样可以大大提高图像处理工作的效率。

解决方案

数据载入

filepath = uigetdir('E:\目标文件夹', '对话框标题');
fsep = filesep;		% Windows:\   Linux:/
imageFilePath = strcat(filepath, fsep);		% 图片路径

% 创建Sub1、Sub2文件夹,用于保存剪裁后的图片
filepathLength = length(filepath);
filePathSub = filepath(1:(filepathLength - 10));	% 10为目标图片所在文件夹的文件夹名称字符长度,这里是为了将sub1和sub2两个文件夹与目标图片文件夹建立在同一级目录下
mkdir([filePathSub, 'Sub1']);		%  在filePathSub路径下创建文件夹Sub1
mkdir([filePathSub, 'Sub2']);

filePathSub1 = strcat(filePathSub, 'Sub1\');
filePathSub2 = strcat(filePathSub, 'Sub2\');

剪裁、写图片

imagePathList = dir(strcat(imageFilePath, '*.jpg'));
len = length(imagePathList);

for i = 1 : 1 : len
	image_name = strcat(imageFilePath, num2str(i));
	image_name = strcat(image_name, '.jpg');
	
	img = imread(image_name);
	% 下面参数为[X_min, Y_min, Width, Height]分别表示原始图片的左下角坐标x、y以及截取区域的宽度width和高度height
	imgSub1 = imcrop(img, [0, 30, 200, 50]);
	imgSub2 = imcrop(img, [210, 0, 270, 75]);
	
	image_nameSub1 = strcat(filePathSub1, num2str(i));
	image_nameSub1 = strcat(image_nameSub1 , '.jpg');
	imwrite(imgSub1, image_nameSub1, 'ipg');
	
	image_nameSub2 = strcat(filePathSub2, num2str(i));
	image_nameSub2 = strcat(image_nameSub2 , '.jpg');
	imwrite(imgSub2, image_nameSub2, 'ipg');
end
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值