我目前使用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输入并在之后进行转换吗?
答案 0 :(得分:4)
这是一个带结构的解决方案,因为我不知道python是如何二进制代表负数的。
import struct
struct.unpack('H', struct.pack('h', number))
它将它打包为短(2个字节)并将其解压缩为无符号短消息。
答案 1 :(得分:3)
>>> import numpy as np
>>> np.array([-20357],dtype="uint16")
array([45179], dtype=uint16)
在你的情况下完成所有内容的循环并将其放在列表中
只需致电np.array(my_list,dtype="uint16")