You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将循环生成的numpy.uint8类型众数数据写入CSV遇迭代错误求助

问题分析与解决

错误根源

  • writerows() 要求传入可迭代的行数据(比如[[60], [40]]这种嵌套列表格式),但你生成的Modus_citra是单个numpy.uint8数值,无法被迭代,直接传入就会触发'numpy.uint8' object is not iterable报错。
  • 每次循环都用'w'模式打开文件,会清空之前写入的内容,最终CSV里只会保留最后一张图的计算结果。

解决方案1:修正CSV模块写法

推荐先收集所有结果再一次性写入,减少IO操作:

import glob
import cv2
import numpy as np
import csv

def find_mode(np_array):                                    
    vals, counts = np.unique(np_array, return_counts=True)    
    index = np.argmax(counts)                                
    return vals[index]                                      

# 先收集所有图像的计算结果
results = []
folder = "C:/Users/ROG FLOW/Desktop/Untuk SIDANG TA/Sudah Aman/testbikincsv/folderdatacitra/*.jpg"
for file in glob.glob(folder):
    image = cv2.imread(file)
    rows = image.shape[0]
    cols = image.shape[1]
    middlex = cols / 2                    
    middley = rows / 2                     
    titikawalx = middlex - 10             
    titikawaly = middley - 10
    titikakhirx = middlex + 10            
    titikakhiry = middley + 10
    crop = image[int(titikawaly):int(titikakhiry), int(titikawalx):int(titikakhirx)]
    c = cv2.cvtColor(crop, cv2.COLOR_BGR2HSV)
    H, S, V = cv2.split(c)
    Modus_citra = find_mode(H)
    results.append([Modus_citra])  # 把单个数值包装成单行列表

# 一次性写入所有数据到CSV
with open("foo.csv", 'w', newline='') as file:
    writer = csv.writer(file)
    writer.writerows(results)

解决方案2:用Pandas简化实现

如果你已经导入了Pandas,用DataFrame写入会更简洁:

import glob
import cv2
import numpy as np
import pandas as pd

def find_mode(np_array):                                    
    vals, counts = np.unique(np_array, return_counts=True)    
    index = np.argmax(counts)                                
    return vals[index]                                      

results = []
folder = "C:/Users/ROG FLOW/Desktop/Untuk SIDANG TA/Sudah Aman/testbikincsv/folderdatacitra/*.jpg"
for file in glob.glob(folder):
    image = cv2.imread(file)
    rows = image.shape[0]
    cols = image.shape[1]
    middlex = cols / 2                    
    middley = rows / 2                     
    titikawalx = middlex - 10             
    titikawaly = middley - 10
    titikakhirx = middlex + 10            
    titikakhiry = middley + 10
    crop = image[int(titikawaly):int(titikakhiry), int(titikawalx):int(titikakhirx)]
    c = cv2.cvtColor(crop, cv2.COLOR_BGR2HSV)
    H, S, V = cv2.split(c)
    Modus_citra = find_mode(H)
    results.append(Modus_citra)

# 直接生成CSV,每行一个数值,去掉索引和表头
pd.DataFrame(results).to_csv("foo.csv", index=False, header=False)

内容的提问来源于stack exchange,提问作者fera fani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 11:50:22