簡體   English   中英

用於16位灰度png圖像的Python圖像處理

[英]Python image processing for 16-bit grayscale png image

我正在編寫一個腳本來檢查圖像是否正常化。 我正在使用Python PNG模塊來分析圖像。 為了測試它,我在Photoshop中創建了一個由2像素線和黑白像素組成的16位圖像。 我的腳本正確識別黑色像素(0),但它給出了與白色像素的預期值(65535)不同的值(65533)。

我不明白為什么會這樣。 我的腳本有問題還是與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"

看起來PNG文件確實存儲了白色像素而不是65535的65533值。我認為這與實際上Photoshop在“16位模式”中使用15位的事實有關,所以有一個小的保存16位灰度圖像時出現錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM