6

現在、python PIL を使用して画像からピクセルを読み取っています。これらのピクセルは 16 ビット グレースケールで、符号なしです。ただし、PIL がそれらを読み取るたびに、署名されていると見なされ、 45179のような値が-20357に変換されます。

org_Image = Image.open(image)
org_Data = org_Image.load()
width, height = org_Image.size

    for y in range(0, height):
        temprow_data = []
        for x in range(0, width):
             temprow_data.append(org_Data[x, y])

符号付き整数の代わりに符号なしを出力するように PIL を取得するにはどうすればよいですか? または、PIL 入力を取得して変換する本当に簡単な方法はありますか?

4

2 に答える 2

7

Pythonが負の数を2進数で表す方法がわからないため、構造体を使用したソリューションを次に示します。

import struct
struct.unpack('H', struct.pack('h', number))

それを short (2 バイト) としてパックし、unsigned short としてアンパックします。

于 2013-10-23T16:24:04.220 に答える
2
>>> import numpy as np
>>> np.array([-20357],dtype="uint16")
array([45179], dtype=uint16)

あなたの場合、すべてのループが完了し、それがリストにある場合

ただ電話するnp.array(my_list,dtype="uint16")

于 2013-10-23T16:21:08.147 に答える