我要存储每个图像的复数,该图像是使用复杂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行。其中每一行仅包含单行。
答案 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])
,我假设您只想保存第一个系数。