图像转换,numpy错误"只有整数标量数组可以转换为标量索引"

时间:2018-04-17 16:14:42

标签: python arrays numpy matplotlib image-processing

我想将灰度图像转换为二进制表示(黑白表示)。我通过使用嵌套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()

1 个答案:

答案 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]):
            ...