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

Python分割文本图像为单行图像时生成全黑图像的问题

文本行图像分割全黑问题的原因与修复

核心问题分析

你遇到的全黑图像问题,本质是数据类型不匹配+数组维度逻辑错误共同导致的:

  1. 数据类型错误
    你初始化的cut_imgs是默认的float64浮点数组,存入整数后变成浮点值(比如100.0)。后续用astype(int)转成的是int32类型,但PIL处理灰度图时,仅支持uint8类型(0-255范围的无符号整数)。int32数组会被PIL错误解析,导致原本的非零数值无法正常显示,最终全黑。

  2. 维度逻辑错误
    cut_imgs定义为[200, 1000, 500],意味着每个分割后的图像是1000行×500列,但你实际需要的是单文本行的图像(1行×原图像宽度)。当前逻辑把原图像的多行数据存入同一个cut_imgs[c]的不同行,导致每个分割图像大部分区域都是0(黑色),视觉上接近全黑。

修复方案

方案1:简化逻辑(推荐)

直接筛选非空行并保存,避免复杂的索引操作:

import numpy as np
from PIL import Image
import sys

np.set_printoptions(threshold=sys.maxsize)
img = Image.open("C:/Users/name/Desktop/Pytorch AI/download.png")
img_data = np.array(img)

# 二值化处理,直接转为uint8类型
img_data = np.where(img_data > 10, 100, 0).astype(np.uint8)

# 计算每行像素和,提取非空行
row_sums = np.sum(img_data, axis=1)
non_empty_rows = img_data[row_sums != 0]

# 逐行保存
for idx, row in enumerate(non_empty_rows):
    # 将单行转为(1, 宽度)的数组,符合灰度图格式
    row_img = row.reshape(1, -1)
    Image.fromarray(row_img).save(f'C:/Users/name/Desktop/Pytorch AI/row_{idx}.png')

方案2:修改原代码的问题点

如果要保留原逻辑,需修正数据类型和维度:

import numpy as np
from PIL import Image
import tensorflow as tf
import sys

np.set_printoptions(threshold=sys.maxsize)
img = Image.open("C:/Users/name/Desktop/Pytorch AI/download.png")
img_data = np.array(img)

# 初始化时指定uint8类型,避免浮点转换
cut_imgs = np.zeros([200, img_data.shape[1]], dtype=np.uint8)

# 二值化处理
img_data = np.where(img_data > 10, 100, 0).astype(np.uint8)
z = np.sum(img_data, axis=1)

c = 0
d = 0
for a in img_data:
    if z[d] != 0:
        # 直接将整行存入cut_imgs[c],而非cut_imgs[c][d]
        cut_imgs[c] = a
        c += 1
    d += 1

# 只保存有内容的行,避免空图像
for g in range(c):
    # 转为(1, 宽度)的数组,确保PIL正确识别为灰度图
    img1 = Image.fromarray(cut_imgs[g].reshape(1, -1))
    img1.save(f'C:/Users/name/Desktop/Pytorch AI/{g}.png')

关于“乘以100修复”的原因

你提到的乘以100能临时解决,是因为浮点值放大后转int得到的数值更大,若此时PIL误将数组解析为16位灰度图(支持0-65535范围),较大的数值才能被显示。但这是治标不治本的方法,核心还是要保证数组类型为uint8,且维度符合图像要求。

内容的提问来源于stack exchange,提问作者Christopher Cabit

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 03:31:37