猿问

反转numpy阵列图片,可能是uint8,uint16,

有没有更漂亮的方法可以做到这一点?具体来说,这些最大值可以通过numpy API获得吗?我无法在API中找到它们,尽管可以在docs中轻松找到它们。


MAX_VALUES = {np.uint8: 255, np.uint16: 65535, np.uint32: 4294967295, \

              np.uint64: 18446744073709551615}


try:

    image = MAX_VALUES[image.dtype] - image

except KeyError:

    raise ValueError, "Image must be array of unsigned integers."

诸如PIL和cv2之类的软件包提供了用于反转图像的便捷工具,但是在代码中,我现在有一个numpy数组-接下来是更复杂的分析-我想坚持使用numpy。


红颜莎娜
浏览 212回答 2
2回答

哈士奇WWW

顺便说一句,您不需要定义MAX_VALUES自己。NumPy内置了它们:import numpy as nph, w = 100, 100image = np.arange(h*w).reshape((h,w)).astype(np.uint8)max_val = np.iinfo(image.dtype).maxprint(max_val)# 255image ^= max_valprint(image)# [[255 254 253 ..., 158 157 156]#  [155 154 153 ...,  58  57  56]#  [ 55  54  53 ..., 214 213 212]#  ..., #  [ 27  26  25 ..., 186 185 184]#  [183 182 181 ...,  86  85  84]#  [ 83  82  81 ..., 242 241 240]]

扬帆大鱼

尝试做image ^= MAX_VALUES[image.dtype]
随时随地看视频慕课网APP

相关分类

Python
我要回答