matlab实现图像的简单裁剪

在数字图像处理问题当中,为了缩小图像尺寸从而减轻后续处理的难度,通常需要对原图像进行一定尺寸的剪裁,以缩小处理范围。
数学建模问题中,如果涉及到关于从图像中获取信息的问题,就不可避免地要进行图像剪裁,在MATLAB当中,有着比较完善的自带函数对图像进行剪裁,下面我拿一个简单的例子进行介绍。
如下
这一一张《魔法使的新娘》女主的图像

下面我要将它的头部进行一定的裁剪。
首先介绍一下用到的几个函数:(其中变量统一用以下标识)

  1. 读取图片文件:A0 = imread(“imgName”); %imgName是图像的名称,带扩展名,如果在当前文件夹下可以不用写全路径
  2. 用一个figure窗口展示读取的图片:imshow(A0);
  3. [x0, y0] =ginput(2); %通过鼠标点击获得两个点的坐标,存储在x0, y0里面,其中x0, y0 都是二元数组,x0存储着两个点的横坐标信息,y0为纵坐标信息。当然,也可以获取n个点的坐标存储在[x0, x1, x2, …,xn-1]里面
  4. A1 = imcrop(A0, [x0(1), y0(1), abs(wide), abs(hight)]); %对图片进行一定尺寸的剪裁,其中x0(1), y0(1)就是起始点的横纵坐标,和以上2中变量一致,而
    wide =abs(x0(2) - x0(1));
    hight = abs(y0(2) - y0(1));
    表示从起始点到终点的距离,通俗说也就是剪裁后图片的长和宽。
  5. 保存图片:imwrite(A1, name); 其中name是一个字符串,表示你要保存的图片的名字(包括扩展名)。

下面附上我的源码,为了便于学习,使用较多的m文件进行封装:
第1个m文件,读取并展示图片,
readImg.m


A = imread('img.png');
imshow(A);

第2个m文件,就是第3个文件里面使用的
getPoint.m

readImg;
[x0,y0] = ginput(2);
%x0 = 353 747  y0 = 77 391
% wide 394  hight  314
wide = abs(x0(2) - x0(1));
hight = abs(y0(2) - y0(1));
start1 = x0(1)
start2 = y0(1)
wide
hight

第3个m文件,读取,剪裁,并保存图片,这就是整个流程的主函数
cutAndSave.m


readImg;    %这里是另一个源文件,表示读取并用鼠标获取起始点和终点,下面会展示。没错,文件就在这里读取
getPoint;
A1 = imcrop(A, [x0(1), y0(1), abs(wide), abs(hight)]);
imshow(A1)

name = 'smallImg.jpg';
imwrite(A1, name);

这三个m文件就实现了图片的简单剪裁,效果以及相关数据如下
效果和数据

关于MATLAB图像处理的更多知识,之后会慢慢介绍。
学到了就多多支持^ _ ^

  • 23
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要使用Matlab批量裁剪图片,你可以按照以下步骤进行操作: 1. 首先,你需要准备好存放图片的文件夹。确保你的图片都以.jpg为后缀,并将文件夹路径保存在变量file_path中。 2. 使用dir函数获取该文件夹下所有以.jpg为后缀的图片的路径,并将路径保存在img_path_list中。使用length函数获取图片数量,并将数量保存在变量img_num中。 3. 使用循环逐个读取图片,可以使用imread函数读取图片,然后使用imcrop函数裁剪图片。imcrop函数的第二个参数是一个矩形框,通过指定左上角的坐标和裁剪的宽度和高度来确定裁剪的位置和尺寸。 4. 使用imwrite函数将裁剪后的图片保存到指定的文件夹中,可以使用strcat函数将文件夹路径和图片名称拼接起来作为保存路径。 下面是一个示例代码: ```matlab clear;clc; file_path = 'path\to\your\images\'; % 设定你存放图片的目录 img_path_list = dir(strcat(file_path, '*.jpg')); % 选后缀为 .jpg 的图片 img_num = length(img_path_list); %获得图片数量 for j = 1:img_num image_name = img_path_list(j).name; image = imread(strcat(file_path, image_name)); crop_image = imcrop(image, [XMIN, YMIN, WIDTH, HEIGHT]); % 使用 imcrop() 函数来裁剪图片,指定裁剪的位置和尺寸 imwrite(crop_image, strcat('path\to\save\', image_name)); % 保存文件 end ``` 请注意,你需要根据你的需求修改代码中的路径和裁剪的位置和尺寸参数。其中,XMIN表示裁剪区域的左上角的x坐标,YMIN表示裁剪区域的左上角的y坐标,WIDTH表示裁剪区域的宽度,HEIGHT表示裁剪区域的高度。 希望这个示例能够帮助你批量裁剪图片。如果还有其他问题,请随时提问。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [matlab图像进行批量剪切](https://blog.csdn.net/guangwulv/article/details/120181800)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [MATLAB:批量对图片进行裁剪](https://blog.csdn.net/weixin_39679367/article/details/84475901)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值