2013-07-01 3 views
0

Мне нужно добавить имя изображения, которое было обработано в Python, в выходной файл .csv. И поместить результаты следующей обработки изображения в другой .csv вертикальный столбец или горизонтальную строку.Как добавить имя обработанного изображения в выходной файл .csv?

Как? Вот код:

def humoments(self):    #function for HuMoments computation 
    for filename in glob.iglob ('*.tif'): 
     img = cv.LoadImageM(filename, cv.CV_LOAD_IMAGE_GRAYSCALE) 
     cancer = cv.GetHuMoments(cv.Moments(img)) 
     #arr = cancer 
     arr = numpy.array([cancer]) 
    with open('hu.csv', 'wb') as csvfile: #puts the array to file 
     for elem in arr.flat[:50]: 
      writer = csv.writer(csvfile, delimiter=' ', quotechar='|',  quoting=csv.QUOTE_MINIMAL) 
      writer.writerow([('{}\t'.format(elem))]) 

ответ

0

Лучший способ сделать это, чтобы собрать все данные в виде списка или массива, а затем записать его в CSV-файл построчно. Вот пример:

import csv 
import numpy 

allFileNames = []; 
allArrs = []; 
for i in range(10): 
    arr = i * numpy.ones((5,5)) # fake data as an example 
    filename = 'file ' + str(i) # fake file names 

    allFileNames.append(filename) # keep track of the file name 
    allArrs.append(list(arr.flatten())) # keep track of the data 

with open('hu.csv', 'wb') as csvfile: #puts the array to file 
    writer = csv.writer(csvfile) 

    # write file names to the first row 
    writer.writerow(allFileNames) 

    # transpose arrs so each list corresponds to a column of the csv file. 
    rows = map(list, zip(*allArrs)) 

    #write array to file 
    writer.writerows(rows) 

Это даст вам CSV-файл с именем файла в верхней части каждого столбца и соответствующие данные ниже него.

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