how to automatically Crop images in a folder and saving them in a sub folder

조회 수: 10 (최근 30일)
I want to wright a code that automatically crop images with a known position, the images are stored in a folder with names 1,2,3,.....,i. it's required to save it with a prefix with the same name, I tried this code to cropping:
imageDir = fullfile('D:\3D_construction\im_set');
im_Set = imageSet(imageDir);
images = cell(1, im_Set.Count);
for i = 1:im_Set.Count
imagcrop{i} = imcrop(i,[1519 1179 760 440]);
end
I tried many ways to save the cropped images but it didn't work if any one can help me I'd be grateful. Thank you in advance
  댓글 수: 3
Image Analyst
Image Analyst 2020년 9월 22일
Sirajdin, there is no iri in your code.
Please start a new question and there put the entire error message (ALL the red text) which would include the actual line number and actual line of code that is throwing the error. In the meantime, try this:
inputFolder = 'C:\Users\Asirajdin\Documents\MATLAB\Negative Images';
imgSets = imageSet(inputFolder, 'recursive')
outputFolder = fullfile(pwd, 'Output'); %'C:\Users\Asirajdin\Documents\MATLAB\Gray sc';
if ~isfolder(outputFolder)
mkdir(outputFolder);
end
keepGoing = true;
for folderIndex = 1 : length(imgSets)
thisFolder = imgSets(folderIndex).Description;
numImagesInThisFolder = imgSets(folderIndex).Count;
fprintf('Processing the %d images in folder "%s"\n', numImagesInThisFolder, thisFolder);
for k = 1 : numImagesInThisFolder
% Read in input image.
thisFullInputFileName = imgSets(folderIndex).ImageLocation{k};
theImage = imread(thisFullInputFileName);
imshow(theImage);
title(thisFullInputFileName);
drawnow;
% Crop the image.
promptMessage = sprintf('Do you want to crop and save this image,\nor Quit processing?');
titleBarCaption = 'Continue?';
buttonText = questdlg(promptMessage, titleBarCaption, 'Yes, Continue', 'No, Quit', 'Yes, Continue');
if contains(buttonText, 'Quit', 'IgnoreCase', true)
keepGoing = false;
break;
end
croppedImage = imcrop(theImage);
% Create output image.
baseFileName = sprintf('Image #%d.jpg', k);
fullOutputFileName = fullfile(outputFolder, baseFileName);
fprintf('Copying #%d of %d: "%s"\n to "%s"\n', k, numImagesInThisFolder, thisFullInputFileName, fullOutputFileName);
imwrite(croppedImage, fullOutputFileName);
end
if ~keepGoing
break;
end
end
asirajdin
asirajdin 2020년 11월 2일
Thanks for the response, I have actually realised where the problem was and it has been resolved.

댓글을 달려면 로그인하십시오.

채택된 답변

Image Analyst
Image Analyst 2017년 6월 24일
How about this:
imageDir = 'D:\3D_construction\im_set';
im_Set = imageSet(imageDir);
for k = 1 : im_Set.Count
theImage = imread(im_set........whatever....
croppedImage = imcrop(theImage,[1519, 1179, 760, 440]);
baseFileName = sprintf('Image #%d.png', k);
fullFileName = fullfile(imageDir, baseFileName);
imwrite(croppedImage, fullFileName);
end
  댓글 수: 7
hanyang huang
hanyang huang 2018년 4월 11일
my image files are named IMG_1, IMG_2 ......IMG_1000, SO what should I name it here for im_set? It shows error about the imread file type

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

nisa sarfraz
nisa sarfraz 2020년 1월 14일
this code gives error in cropped image. why?
  댓글 수: 3
Sidra  Ashraf
Sidra Ashraf 2020년 1월 15일
now what should be written in place of points??
Image Analyst
Image Analyst 2020년 1월 15일
I don't see "points" mentioned in George's code. Let's see your code and your error message, both of which you forgot to attach.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Get Started with MATLAB에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by