Как записать комплексные числа в один CSV-файл в каждой строке? - PullRequest
0 голосов
/ 14 февраля 2019

Я хочу для хранения комплексного числа каждого изображения , которое генерируется с помощью быстрого преобразования Фурье , которое имеет тип complex 128 .код выглядит следующим образом:

import cv2
import glob
import numpy as np
bloodVessal=[]
for file in glob.glob('/home/raviraj/PycharmProjects/Diabetic/testing/*.jpeg'):
    img=cv2.imread(file)
    cv2.imshow('file',img)
    img = cv2.resize(img, (255, 255), interpolation=cv2.INTER_CUBIC)

    # split image
    b, g, r = cv2.split(img)
    cv2.imshow("green window", g)

    # creating CLAHE histogram
    clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8))
    claheImg = clahe.apply(g)
    cv2.imshow('clahe image', claheImg)

    # Edge Detection
    edge = cv2.Canny(claheImg, 165, 40)
    cv2.imshow('Edge detection ', edge)

    # FFT
    f = np.fft.fft2(edge)

    np.savetxt('/home/raviraj/PycharmProjects/Diabetic/testing/blood vessel.csv', f, delimiter=',')

    cv2.waitKey(0)
    cv2.destroyAllWindows()

этот код создает файл CSV с 255 строк и 255 столбцов .Я хочу только один столбец и 200 строк . В котором каждая строка содержит данные каждого изображения всего в одной строке .

1 Ответ

0 голосов
/ 15 февраля 2019

Я предполагаю, что вы хотите сохранить список bloodVessel в простой текстовый файл.Чтобы сделать это с одним столбцом, добавьте следующее после цикла:

np.savetxt('data.csv',bloodVessel,delimiter=',')

Это создаст файл с именем data.csv, который выглядит следующим образом:

(0.000000000000000000e+00+1.000000000000000000e+00j)
(5.000000000000000000e+00+3.000000000000000000e+00j)

Если вы хотитедействительные и мнимые части в отдельных столбцах (и требуется разделитель запятых):

np.savetxt('data.csv',[np.real(bloodVessel),np.imag(bloodVessel)],delimiter=',')

, который вместо этого создаст файл, похожий на

0.000000000000000000e+00,+1.000000000000000000e+00
5.000000000000000000e+00,+3.000000000000000000e+00

Я бы также рекомендовал предварительно выделить bloodVessel как простой массив сложного типа, а не добавление в список для воспитания хороших привычек.

ОТВЕТ НА КОММЕНТАРИЙ И ВНЕШНЕЕ ОБНОВЛЕНИЕ ВОПРОСА

ДоВы сохраняли свои коэффициенты Фурье в списке bloodVessel, добавляя.На данный момент я не уверен, как вы редактируете свой код.Однако, если ваши данные Фурье теперь НЕ являются просто одним комплексным значением, вы все равно можете делать то, что было упомянуто выше, просто сохраняя нужный коэффициент в списке, а не весь массив коэффициентов.

То есть перейдите от bloodVessel.append(f) к bloodVessel.append(f[0]), где, как я полагаю, вы хотите сохранить только первый коэффициент.

...