2015-01-22 3 views
0

Я пишу программу в IDL, которая требует чтения n изображений (каждый из м пикселей) из каталога, преобразования их в оттенки серого, объединения каждого изображения в виде одного вектора, а затем формирования m * n из данных.Чтение нескольких изображений в IDL

До сих пор мне удалось прочитать и преобразовать одно изображение в вектор оттенков серого, но я не могу понять, как расширить его до чтения нескольких файлов изображений.

Может ли кто-нибудь посоветовать, как я могу адаптировать свой код для этого? (Файлы изображений будут все одного и того же размера, и находится в той же директории с удобными именами - т.е. testpicture1, testpicture2 и т.д.)

Благодаря

pro readimage 

    image = READ_IMAGE('Z:\My Documents\testpicture.jpg') 

    redChannel = REFORM(image[0, *, *]) 
    greenChannel = REFORM(image[1, * , *]) 
    blueChannel = REFORM(image[2, *, *]) 

    grayscaleImage = BYTE(0.299*FLOAT(redChannel) + $ 
     0.587*FLOAT(greenChannel) + 0.114*FLOAT(blueChannel)) 

    imageVec = grayscaleImage[*] 

    end 

ответ

2

Использование FILE_SEARCH найти имена и номера образов данного имени:

filenames = FILE_SEARCH('Z:\My Documents\testpicture*.jpg', count=nfiles) 

Вы, вероятно, также хотят, чтобы объявить массив для хранения результатов:

imageVec = bytarr(m, nfiles) 

Затем перебирает файлы с FOR петли делать то, что вы делаете уже:

for f = 0L, nfiles - 1L do begin 
    ; stuff you are already doing 
    imageVec[*, f] = grayscaleImage[*] 
endfor 
+0

Спасибо за ваш ответ - что имеет смысл для меня. – user2137944

+0

, так что я поняла, что будет mgalloy, будет ли строка «image = READ_IMAGE ('filenames [f]')« работать как первая строка внутри цикла for? – user2137944

+0

Да, это должно сработать! – mgalloy

Смежные вопросы