2014-02-25 5 views
0

나는 for-loop 용 matlab에서 일부 이미지를 자르고있다. 그러나, 나는 그렇게하기 위해 몇 가지 문제에 직면하고있다. 내 코드는 위의 것입니다 :루프를위한 matlab에서 이미지 자르기

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 

일부 이미지에서는 적절한 이미지가 표시되지 않습니다. 이미지가 읽혀지고 크기가 t1 t2 인 것 외에도, 나는 원하는 방식으로자를 수 없으며 결과적으로 빈 A 이미지를 얻습니다.

+0

그러면 자르기를 원하는 방식은 무엇입니까? 원하는 결과를 말씀해 주시겠습니까? – kkuilla

+0

1/3x_max에서 2/3x_max까지 및 1/3y_max 2/3y_max에서 1/3x_max. –

+0

일반적인 조언 : 코드에서 변수에 다른 이름을 지정하십시오. 'A = imcrop (A, ...)'라고 쓰면 이미지를 읽는 동안 또는 이미지를 자르는 동안 빈 행렬의 문제가 있는지 알 수 없습니다. – Adiel

답변

1

어쩌면 일부 컬러 화상이므로 사용이 -

[T1에서 T2에서 T3 = 사이즈 (A)를;

그리고 나머지 코드는 그대로 유지하십시오.

컬러 이미지의 원본 코드에서 t2는 너비 x 너비가 아닌 너비 x3을 저장합니다.

+0

실제 문제는 내가 t1과 t2의 반대쪽에 있다는 것이 아닙니다. –

+0

예, MATLAB이 크기 정보를 저장하는 방식으로, 때때로 혼란 스러울 수 있습니다. 그러나 어쨌든, [t1 t2 t3] = size (A); 문제를 해결하는 더 안전한 방법입니다. – Divakar