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

手写数字识别数据集生成异常,如何修正代码实现目标格式?

修正手写数字识别数据集生成代码:仅保留有像素的位置

由于你未提供原始生成代码,以下基于常见的手写数字图像(如MNIST类单通道灰度图)处理场景,给出修正思路和示例代码,实现仅在有像素(灰度值非0)的位置记录数据到dataset.csv。

  • 核心逻辑:遍历图像每个像素,仅当像素值(灰度值)大于0时,记录该像素的行坐标、列坐标、像素值,跳过值为0的像素。
  • 示例代码:
import csv
import cv2
import os

# 假设你的手写数字图像存储在这个目录下
image_dir = "handwritten_digits"
output_csv = "dataset.csv"

# 初始化CSV写入器
with open(output_csv, mode='w', newline='') as file:
    writer = csv.writer(file)
    # 写入表头:数字标签、行坐标、列坐标、像素值
    writer.writerow(["digit_label", "row", "col", "pixel_value"])

    # 遍历目录下的所有图像文件
    for filename in os.listdir(image_dir):
        if filename.endswith((".png", ".jpg", ".jpeg")):
            # 提取文件名中的数字标签(假设文件名格式如"digit_5_img1.png")
            digit_label = filename.split("_")[1]
            # 读取图像为灰度图
            img = cv2.imread(os.path.join(image_dir, filename), cv2.IMREAD_GRAYSCALE)
            # 获取图像尺寸
            height, width = img.shape

            # 遍历每个像素
            for row in range(height):
                for col in range(width):
                    pixel_val = img[row, col]
                    # 仅写入非0的像素值
                    if pixel_val != 0:
                        writer.writerow([digit_label, row, col, pixel_val])
  • 代码说明:
    • 使用cv2读取灰度图像,确保获取每个像素的灰度值。
    • 外层遍历图像文件,提取数字标签(需根据你的实际文件名格式调整标签提取逻辑)。
    • 内层遍历像素时,通过if pixel_val != 0过滤掉无像素的区域,只保留有效数据写入CSV。
    • CSV表头包含数字标签、像素的行列坐标和对应值,方便后续模型训练时解析。

如果你的原始代码有特定的图像读取方式或数据结构,可替换对应部分的逻辑,核心是过滤掉值为0的像素,仅保留非零像素的相关信息。

内容的提问来源于stack exchange,提问作者S.G.Lee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 01:20:32