matlab中循环裁剪图像
我试图在matlab for循环中剪切一些图像。然而,为了做到这一点,我面临着一些问题。我的代码如下:matlab中循环裁剪图像,matlab,image-processing,crop,Matlab,Image Processing,Crop,我试图在matlab for循环中剪切一些图像。然而,为了做到这一点,我面临着一些问题。我的代码如下: clear clc dir dir 'D:\christos\DATABASE\animal'; listing = dir('D:\christos\DATABASE\animal'); [m n] = size(listing); for indx=3:m listing(indx).name A = imread(strcat( 'D:\christos\DATABASE\a
clear
clc
dir
dir 'D:\christos\DATABASE\animal';
listing = dir('D:\christos\DATABASE\animal');
[m n] = size(listing);
for indx=3:m
listing(indx).name
A = imread(strcat( 'D:\christos\DATABASE\animal\' , listing(indx).name));
[t1 t2] = size(A); imshow(A);
A = imcrop(A, [ (1/3)*t1 (1/3)*t2 (2/3)*t1 (2/3)*t2 ] );
%A = imresize(A, [360, 280]);
imwrite(A, strcat('D:\christos\DAt\animal\animal_', int2str(indx-2) , '.jpg'));
end
在某些图像中,它无法正常工作在imcrop行中。除了图像已经被读取并且大小为t1 t2之外,我不能按照我想要的方式裁剪它,结果得到一个空的图像 可能有些是彩色图像,所以使用这个- [t1 t2 t3]=尺寸(A) 并保持代码的其余部分不变
使用彩色图像的原始代码,t2将存储-widthx3,而不是宽度本身。您希望以什么方式裁剪它?请说明您想要的结果好吗?Yea drom 1/3x_max到2/3x_max和1/3y_max 2/3y_max。一般建议:在代码中为变量指定不同的名称。如果编写
A=imcrop(A,…)
,则无法知道在读取图像或裁剪图像时是否会出现空矩阵问题……另一种解决方法是通过批处理脚本或Matlab使用命令行调用ImageMagick。如果你在很多文件上操作,速度可能会更快。不,实际的问题是我使用了与t1和t2相反的方式。是的,这是MATLAB存储大小信息的方式,有时会令人困惑。但在任何情况下,[t1 t2 t3]=尺寸(A);是避免麻烦的更安全的方法。