如何将复数写到每一行的一个csv文件中?

时间:2019-02-14 16:45:13

标签: python-3.x csv numpy fft

我要存储每个图像的复数,该图像是使用复杂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()

此代码正在创建具有 255行和255列的CSV文件。我只需要一列200行。其中每一行仅包含单行

1 个答案:

答案 0 :(得分:1)

我假设您要将列表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预分配为复杂类型的numpy数组,而不是附加到列表中以养成良好的习惯。

对评论的答复和对问题的明显答复

在通过添加将傅里叶系数保存在列表bloodVessel中之前。目前,我不确定您如何编辑代码。但是,如果您的傅立叶数据现在不只是单个复数值,那么您仍然可以执行上述操作,只需将所需的系数保存在列表中,而不是将整个系数数组保存。

也就是说,从bloodVessel.append(f)bloodVessel.append(f[0]),我假设您只想保存第一个系数。