Python 是否有一种图像格式可以使用一个大于255的数字保存一个像素

Python 是否有一种图像格式可以使用一个大于255的数字保存一个像素,python,image,numpy,opencv,Python,Image,Numpy,Opencv,我正在尝试创建一个面具来分析我的一些图像。在这个面具中,我需要至少有500个不同的数字。但我可以只使用一个ndarray而不将其更改为图像,因为我在创建遮罩的过程中使用了opencv。。因此,如果一个数字大于255,只需将其更改为(数字-255) 我不明白,为什么你不能在两个lin_mask作业中都使用np.uint16而不是np.uint8!?切换到这一点,m的最大值为470。为了跟进@HansHirse所说的话,可能是有用的。谢谢各位,但请有人解释一下为什么最大值为470。不幸的是,我不确定

我正在尝试创建一个面具来分析我的一些图像。在这个面具中,我需要至少有500个不同的数字。但我可以只使用一个ndarray而不将其更改为图像,因为我在创建遮罩的过程中使用了opencv。。因此,如果一个数字大于255,只需将其更改为(数字-255)


我不明白,为什么你不能在两个
lin_mask
作业中都使用
np.uint16
而不是
np.uint8
!?切换到这一点,
m
的最大值为
470
。为了跟进@HansHirse所说的话,可能是有用的。谢谢各位,但请有人解释一下为什么最大值为470。不幸的是,我不确定他的意思@HansHirse是唯一能给你答案的人。@Eshaka只是在运行时调试/检查你的代码。按原样运行代码时,
m
中的最大值为
255
。事实上,由于您使用的是
np.uint8
,所以值不能大于
255
。如果我们切换到
np.uint16
,运行您的代码就会显示
m
中的最大值是
470
。我不知道为什么最大值是470。这是你的代码,我还没有分析它的实际功能。这取决于你!?
def create_mask(x=20, y=12, l=480):
    s = int(l / y)
    lin_mask = np.zeros([l*2, s*x], np.uint8)
    color = 0
    for i in range(y*2):
        for j in range(x):
            lin_mask[i*s:(i+1)*s, j*s:(j+1)*s] = np.ones([s, s], np.uint8)*color
            color = color + 1
    m = cv2.warpPolar(lin_mask, (l*2, l*2), (l, l), l, cv2.WARP_INVERSE_MAP)
    t = int(l/2)
    m = m[t: t+l, t:t+l]
    return m