MATLAB截取图像特定区域
你好!你可以仔细阅读这篇文章,了解一下MATLAB的截取图像的特定区域的方法。
截取程序
imcrop
函数
功能
:用于返回图像的一个裁剪区域。可把图像显示在一个图像窗口中。
代码片示例
.
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))裁剪长度
读取图片
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
函数
功能
: 允许用户以交互方式使用鼠标选定要剪切的区域以此
获取两个坐标点并以矩形方式裁剪
[x,y] = ginput(n) %n为你想选的点的个数,鼠标点的点的横坐标和纵坐标就会保存到[x,y]中。然后再输出x,y便可获取在图片上需要截取的点的坐标!
完整代码
代码片
.
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
截取前
截取后
版权声明:本文为wangcl1999原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。