程序不创建CSV文件

kuarbcqp  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(75)

非功函数writerows()open()
我有回收的图像抛出2个循环和给予值 x,y,pix[x,y].值 *pix[x,y*]分布到 r,g,b.数组有表和数组结果的标题适合表列 x,y,r,g,b.
代码:
enter image description here

import csv
import cv2
import os
from PIL import Image  # Подключим необходимые библиотеки.


image = Image.open("S45-3-4.jpg") #Открываем изображение.
width = image.size[1] #Определяем ширину.
height = image.size[1] #Определяем высоту.
pix = image.load() #Выгружаем значения пикселей.

for x in range(height):
   for y in range(width):
     r, g, b = pix[x, y]
     results = [x, y, r, g, b]
     headers = ['x', 'y', 'r', 'g', 'b']

     with open('seed45-3-4.csv', 'w', newline='') as f:
        write = csv.writer(f, delimiter=';')
        write.writerows(headers)
        write.writerows(results)

字符串
控制台输出信息:

E:\LinesColor2\venv\Scripts\python.exe E:\LinesColor2\main.py 
Traceback (most recent call last):
  File "E:\LinesColor2\main.py", line 22, in <module>
    write.writerows(results)
_csv.Error: iterable expected, not int

Process finished with exit code 1

whlutmcx

whlutmcx1#

您应该使用writerow方法而不是writerows,因为您试图在csv文件中一次只写入一行。
另外,你正在for循环中创建一个新文件,这非常慢,而不是你想要实现的。
下面是你的代码应该看起来像什么:

import csv
from PIL import Image  # Подключим необходимые библиотеки.

image = Image.open("S45-3-4.jpg") #Открываем изображение.
width = image.size[1] #Определяем ширину.
height = image.size[1] #Определяем высоту.
pix = image.load() #Выгружаем значения пикселей.e

with open('seed45-3-4.csv', 'w', newline='') as f:
   writer = csv.writer(f, delimiter=';')
   headers = ['x', 'y', 'r', 'g', 'b']
   writer.writerow(headers)

   for x in range(height):
      for y in range(width):
         r, g, b = pix[x, y]
         results = [x, y, r, g, b]
         writer.writerow(results)

字符串

相关问题