【发布时间】:2014-03-27 11:18:56
【问题描述】:
我正在尝试在 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 的事实之外,我无法以我想要的方式裁剪它,结果我得到一个空的 A 图像。
【问题讨论】:
-
那你想怎么裁剪呢?请您说明您想要的结果吗?
-
是的,从 1/3x_max 到 2/3x_max 和 1/3y_max 2/3y_max。
-
一般建议:为代码中的变量指定不同的名称。如果你写
A=imcrop(A,...),你不知道空矩阵的问题是在读取图像时出现的,还是在裁剪时出现的...... -
解决此问题的另一种方法是通过批处理脚本或 Matlab 使用命令行调用 ImageMagick。如果您对大量文件进行操作,它可能会更快。
标签: matlab image-processing crop