How to use Loop to write multiple rows into my output CSV ?
5 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
dp sb
el 3 de Ag. de 2015
Comentada: Image Analyst
el 4 de Ag. de 2015
I am writing a code to read multiple images from a path and analyze them to throw them into two buckets for ex: 'Good Images' and 'Bad Images'. I want to write the path of the image into an output CSV file which contains two columns : Path_GoodImage, Path_BadImage with their respective rows as the image paths.
Since i have a loop to read each image and analyze, i want too write the path under it's specific column for every image read.
How can i create a CSV file like such which takes the minimum time as i would be writing about a million rows!
for f = 1 : numberOfImageFiles
fullFileName = fullfile(thisFolder, baseFileNames(f).name);
I = imread(fullFileName);
% Some Analysis
If Image = Good
%%i want to write the path of the image which is fullFileName to the CSV under the column Path_GoodImage.
esle
%%i want to write the path of the image which is fullFileName to the CSV under the column Path_BadImage.
end
end
Also another question - Would it take more time if i actually just write the image using imwrite to two folders named 'GoodImage\' and 'BadImage\' . If Yes is it a significant amount of time difference.? I am scared to do this beacuse i am processing about a million images and time is a big concern.
Any help is appreciated. Thank You very much.
0 comentarios
Respuesta aceptada
Image Analyst
el 3 de Ag. de 2015
Try it this way:
If Image == Good
%%i want to write the path of the image which is fullFileName to the CSV under the column Path_GoodImage.
% Write filename to column 3 and nothing to column 4.
fprintf(fid, '%d,%f,%s,,%f\n', value1, value2, fullFileName, value3);
else
%%i want to write the path of the image which is fullFileName to the CSV under the column Path_BadImage.
% Write nothing to column 3 and filename to column 4.
fprintf(fid, '%d,%f,,%s,%f\n', value1, value2, fullFileName, value3);
end
Take note of the commas in the format specifier strings in the above code. It's writing the fullFileName to either one column or the other.
It should not take any more time to write to two files than 1. Instead of fid which is the same for both cases, Just use fidGood for the file in the "good" folder, and fidBad for the file in the "bad" folder.
6 comentarios
Image Analyst
el 4 de Ag. de 2015
No, the string holds one record, and you're writing out one string at a time. You could try building up one gigantic string with all the lines included in it before you write any out, and then just write out that enormous string in one call if you want. It might be faster - who knows?
Más respuestas (0)
Ver también
Categorías
Más información sobre Get Started with MATLAB en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!