我在CSV中保存数据时遇到问题。假设我有要保存的数据:文件名,图像中的7个坐标,然后是图像的矩阵;我希望它们在CSV文件的一行中。
这是代码:
for each_image in raw_data:
image_file = Image.open(each_image)
each_file_path = image_file.filename
print(each_file_path)
image = cv2.imread(each_file_path)
grey_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
cv2.imshow('imagetest', grey_image)
cv2.setMouseCallback('imagetest', mousePoints)
cv2.waitKey(10000)
cv2.destroyAllWindows()
image_from_array = Image.fromarray(grey_image)
width, height = image_from_array.size
format = image_from_array.format
mode = image_from_array.mode
img_grey = image_from_array.convert('L')
value = np.asarray(img_grey.getdata(), dtype=np.int).reshape
((img_grey.size[1], img_grey.size[0]))
value = value.flatten()
print(value)
with open('ImageMatrix.csv', 'a', newline='') as csvfile:
csvwriter = csv.writer(csvfile, delimiter=',', escapechar=' ',
quoting=csv.QUOTE_NONE)
csvwriter.writerow(circles)
csvwriter.writerow(each_file_path)
csvwriterMatrix = csv.writer(csvfile, delimiter = ' ', escapechar = ' ',
quoting=csv.QUOTE_NONE )
csvwriterMatrix.writerow(value)
输出是正确的,但它们在3个不同的行中
我的问题是:如何将每个数据的3行合并为1行?
您需要通过对输出文件的一个csv.writer
的writerow()
方法的单个调用来写入一行的所有数据。
这意味着你必须创建一个列表,其中包含所有的值,这些值代表你所说的每个不同的东西,这样你就可以在打电话时将其作为参数传递martineau