2017-11-26 3 views
0

고양이와 개 모두 25000 장의 사진이 하나의 폴더에 저장되어있는 MATLAB 할당이 할당되었습니다. 내 질문은 matlab에 imagedatastore 함수를 사용하여 두 파일 (고양이와 개)을 포함하는 하나의 변수에이 파일을 저장하는 방법입니다. cat.1.png, cat.2.png, ....., cat.N.png, dog.1.png, dog.2 : 파일에 저장된 각각의 이미지는 다음 형식을 따릅니다 .png, ....., dog.N.png,Matlab : 이미지 이름을 기준으로 단일 파일에 저장된 이미지 레이블 지정

이상적으로 이미지 이름을 기준으로 라벨을 붙이는 것이 가장 좋은 방법이라고 생각합니다. 필자는 다양한 구현 방법을 사용하여이 일을 피곤했지만 필자는 계속 실패하고 있습니다. 이것에 대한 조언은 크게 감사하겠습니다! 두 이미지 데이터 저장소에 대한

답변

1

단계는 동일합니다

  1. dir와 일치하는 이름을 가진 모든 이미지 파일을 찾습니다.
  2. fullfile으로이 파일의 전체 경로를 다시 빌드하십시오.
  3. 파일과 함께 이미지 데이터 저장소를 만듭니다.

내 코드는 이미지가있는 동일한 폴더에서 스크립트를 실행한다고 가정합니다. 여기에 코드입니다 :

cats = dir('cat.*.png'); 
files_cats = fullfile({cats.folder}.', {cats.name}.'); 
imds_cats = imageDatastore(files_cats); 

dogs = dir('dog.*.png'); 
files_dogs = fullfile({dogs.folder}.', {dogs.name}.'); 
imds_dogs = imageDatastore(files_dogs); 

당신은 또한 짧은 경로를 사용할 수 있습니다

imds_cats = imageDatastore('cat.*.png'); 
imds_dogs = imageDatastore('dog.*.png'); 

당신은 폴더 이름을 사용하지 않고 (그 안에 범주로 하나의 이미지 데이터의 저장 및 분할 파일을 사용하려면, 모든 파일) 같은 디렉터리에있는 것으로 보인다 이후 :

cats = dir('cat.*.png'); 
cats_labs = repmat({'Cat'},numel(cats),1); 

dogs = dir('dog.*.png'); 
dogs_labs = repmat({'Dog'},numel(dogs),1); 

labs = [cats_labs; dogs_labs]; 
imds = imageDatastore({'cat.*.png' 'dog.*.png'},'Labels',labs); 
+0

대신 (imds_cats & 및 imds_dogs) 2 이미지 데이터 저장소 변수를 사용하는 나는 한하지만, 별도의 일에 저장할 수있는 어쨌든 거기 라벨 속성을 사용하여 카테고리별로 고양이와 개를? –

+0

물론, 조금 까다 롭습니다. 내 대답의 맨 아래에 해당 코드를 추가했습니다. –

+0

반갑습니다. 내 대답이 도움이 되었다면 받아 들일 수있는 것으로 표기 해주십시오 :) –

관련 문제