为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

红颜莎娜 2021-03-29 18:18:13
有没有更漂亮的方法可以做到这一点?具体来说,这些最大值可以通过numpy API获得吗?我无法在API中找到它们,尽管可以在docs中轻松找到它们。MAX_VALUES = {np.uint8: 255, np.uint16: 65535, np.uint32: 4294967295, \              np.uint64: 18446744073709551615}try:    image = MAX_VALUES[image.dtype] - imageexcept KeyError:    raise ValueError, "Image must be array of unsigned integers."诸如PIL和cv2之类的软件包提供了用于反转图像的便捷工具,但是在代码中,我现在有一个numpy数组-接下来是更复杂的分析-我想坚持使用numpy。
查看完整描述

2 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

顺便说一句,您不需要定义MAX_VALUES自己。NumPy内置了它们:


import numpy as np

h, w = 100, 100

image = np.arange(h*w).reshape((h,w)).astype(np.uint8)

max_val = np.iinfo(image.dtype).max

print(max_val)

# 255

image ^= max_val


print(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]]


查看完整回答
反对 回复 2021-04-06
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

尝试做

image ^= MAX_VALUES[image.dtype]


查看完整回答
反对 回复 2021-04-06
  • 2 回答
  • 0 关注
  • 201 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信