MATLAB截取图像特定区域

  • Post author:
  • Post category:其他



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 版权协议,转载请附上原文出处链接和本声明。