【问题标题】:Python image processing for 16-bit grayscale png image16位灰度png图像的Python图像处理
【发布时间】:2011-12-25 05:59:26
【问题描述】:

我正在编写一个脚本来检查图像是否被规范化。我正在使用 Python PNG 模块来分析图像。为了测试它,我在 Photoshop 中创建了一个 2 像素线和一个黑白像素的 16 位图像。 我的脚本正确识别了黑色像素 (0),但它给出的值 (65533) 与我对白色像素的预期 (65535) 不同。

我不明白为什么会这样。我的脚本有问题还是与 Photoshop 保存图像的方式有关?

简约测试png图片:http://i.imgur.com/70D0F.png

脚本:

#!/usr/bin/python

import sys
import png # https://pypi.python.org/pypi/pypng

if len(sys.argv) != 2:
    print "Invalid number of arguments (",len(sys.argv),").\nUsage: python getMinMaxColor.py png_file"
    sys.exit(-1)
pngFilePath = sys.argv[1]

f = open(pngFilePath, 'rb')
r = png.Reader(file=f)
k = r.read()

bitDepth = 16
if k[3]['bitdepth'] != None:
    bitDepth = k[3]['bitdepth']

absMaxColor = 2**bitDepth-1

maxColor = -1
minColor = absMaxColor+1
print "Content:"
for line in k[2]:
    for color in line:
        print color
        if (color > maxColor):
            maxColor = color
        if (color < minColor):
            minColor = color

f.close()

print "\n"

print "Min Color:", minColor
print "Max Color:", maxColor, "( max:", absMaxColor, ")"
if minColor == 0 and maxColor == absMaxColor:
    print "Image is normalized"
else:
    print "Image is not normalized"

【问题讨论】:

    标签: python image-processing png 16-bit pypng


    【解决方案1】:

    似乎 PNG 文件确实为白色像素存储了 65533 值而不是 65535。我认为这与 Photoshop 实际上在“16 位模式”下使用 15 位这一事实有关,所以有保存 16 位灰度图像时有一个小误差。

    【讨论】:

      猜你喜欢
      • 2020-05-15
      • 1970-01-01
      • 2015-06-29
      • 1970-01-01
      • 1970-01-01
      • 2017-07-31
      • 2012-06-13
      • 2012-11-18
      • 1970-01-01
      相关资源
      最近更新 更多