截取图像指定区域

MATLAB截取图像特定区域

你好!你可以仔细阅读这篇文章,了解一下MATLAB的截取图像的特定区域的方法。

截取程序

imcrop函数
功能:用于返回图像的一个裁剪区域。可把图像显示在一个图像窗口中。

代码片示例.

1
picture_1 =imcrop(picture,[x(1),y(1),abs(x(1)-x(2)),abs(y(1)-y(2))])   %切割图像,起始坐标点(x1,y1)截取到终止坐标点(x2,y2)

代码说明:picture为要裁剪的图片
picture_1裁剪后的图片
x(1),y(1)裁剪起始坐标点
abs(x(1)-x(2)),abs(y(1)-y(2))裁剪长度

读取图片

1
2
3
4
5
6
7
8
save_path='D:\picture\';                    %图片地址文件夹   
img_path_list = dir(strcat(save_path,'*.jpg')); %仅读取文件夹中的.jpg文件
img_num=length(img_path_list); %判断图片个数
for i = 1:img_num %采用循环方式读取文件
picture_name =img_path_list(i).name;
picture = imread(strcat(save_path,picture_name));
%imshow(picture);
end

获取截取点坐标

ginput函数

功能: 允许用户以交互方式使用鼠标选定要剪切的区域以此获取两个坐标点并以矩形方式裁剪

1
[x,y] = ginput(n)   %n为你想选的点的个数,鼠标点的点的横坐标和纵坐标就会保存到[x,y]中。然后再输出x,y便可获取在图片上需要截取的点的坐标!

完整代码

代码片.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
save_path='D:\picture\';   

img_path_list = dir(strcat(save_path,'*.jpg'));

img_num=length(img_path_list); %判断图片个数

for i = 1:img_num %因为拍照片的时候固定好了位置所以用一个for循环就可以截取出所有的图片的数字

picture_name =img_path_list(i).name;

picture = imread(strcat(save_path,picture_name));

imshow(picture);

[x,y]=ginput(2); %先用的ginput函数获取图片中数字的起始坐标

%x=[1.0e+03 *0.7145,1.0e+03 *1.0305];

%y=[234.5000,670.5000];

picture_1 =imcrop(picture,[x(1),y(1),abs(x(1)-x(2)),abs(y(1)-y(2))]); %切割图像,起始坐标点(x1,y1)截取到终止坐标点(x2,y2)

imwrite(picture_1,[num2str(i),'.jpg']);%将图片保存在程序所在文件夹中

end

截取前

截取前

截取后

截取后