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

如何用Python统计图像每行的白色像素数量

每行白色像素统计问题修正方案

原代码核心问题

  • cv2.imread默认加载彩色图像,img == 0会对RGB三个通道分别判断,生成的mask是3通道数组,后续cv2.reduce会对每个通道单独求和,导致统计结果不符合预期。
  • 白色像素判断逻辑错误:白色在RGB中是(255,255,255),灰度图中是255,原代码误将黑色(0)的统计结果用于计算白色像素数。

修正代码(两种场景)

场景1:灰度图模式处理(适合二值/黑白图像)

import cv2
import numpy as np

# 以灰度模式读取图像
img = cv2.imread("11.jpg", cv2.IMREAD_GRAYSCALE)
# 生成白色像素掩码:灰度值为255的像素标记为1
white_mask = np.uint8(np.where(img == 255, 1, 0))
# 按行求和,直接得到每行白色像素数量
row_white_counts = cv2.reduce(white_mask, 1, cv2.REDUCE_SUM, dtype=cv2.CV_32SC1)

场景2:彩色图像直接处理

import cv2
import numpy as np

img = cv2.imread("11.jpg")
# 判断每个像素的RGB三个通道是否全为255(即白色)
white_mask = np.all(img == 255, axis=2).astype(np.uint8)
# 按行求和统计白色像素数
row_white_counts = cv2.reduce(white_mask, 1, cv2.REDUCE_SUM, dtype=cv2.CV_32SC1)

额外提示

  • 避免硬编码行宽(如原代码的224),可以用img.shape[1]获取图像实际每行像素数,适配不同尺寸的图像。
  • 如果图像存在噪声导致白色像素不是严格的255,可以用阈值处理(如cv2.threshold)生成二值图后再统计。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 02:30:59