Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
matlab中循环裁剪图像_Matlab_Image Processing_Crop - Fatal编程技术网

matlab中循环裁剪图像

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

我试图在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\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);是避免麻烦的更安全的方法。