我想将灰度图像转换为二进制表示(黑白表示)。我通过使用嵌套for循环来做到这一点,但我得到了标题中提到的错误。是否有任何提示和技巧可以绕过此错误。
import numpy as np
import matplotlib.pyplot as plt
fname = 'nao_bw.jpg'
img = plt.imread('/Users/anil/Desktop/nao_bw.jpg')
imgplot = plt.imshow(img)
img_as_np = np.asarray(img)
for i in range(img_as_np):
for j in range(img_as_np):
if img_as_np[i,j]< 100 and img[i,j]>150:
img_as_np[i,j] = 0
else:
img_as_np[i,j] = 255
plt.show()
答案 0 :(得分:1)
这不是numpy的错误,当你尝试range(img_as_np)
时会出现错误。您正在尝试从numpy数组创建一个范围对象,这是没有意义的。就像你写了range(np.array([[1,2],[3,4]]))
一样,你希望范围函数做什么?我猜你想要range(len(img_as_np))
并且你有一个方形图像。如果图像不是正方形,那么您应该:
for i in range(img_as_np.shape[0]):
for j in range(img_as_np.shape[1]):
...