【问题标题】:Image conversion, numpy error "only integer scalar arrays can be converted to a scalar index"图像转换,numpy错误“只能将整数标量数组转换为标量索引”
【发布时间】:2018-09-27 16:56:01
【问题描述】:

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

【问题讨论】:

  • 请按照您创建此帐户时的建议阅读并遵循帮助文档中的发布指南。 Minimal, complete, verifiable example 适用于此。在您发布 MCVE 代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中并重现您描述的问题。特别是,提供完整的错误消息和重现它所需的输入。

标签: python arrays numpy matplotlib image-processing


【解决方案1】:

这不是 numpy 的错误,当您尝试执行 range(img_as_np) 时会出现该错误。您正在尝试从一个没有意义的 numpy 数组创建一个范围对象。就好像你写了range(np.array([[1,2],[3,4]])),你想让range函数做什么?我猜你想要range(len(img_as_np)) 并且你有一个方形图像。如果图像不是正方形,那么您应该:

    for i in range(img_as_np.shape[0]):
        for j in range(img_as_np.shape[1]):
            ...

【讨论】:

    猜你喜欢
    • 2020-09-24
    • 2020-04-30
    • 2021-07-15
    • 1970-01-01
    • 2020-07-23
    • 2021-10-31
    • 2018-05-29
    • 2020-09-16
    • 2020-04-20
    相关资源
    最近更新 更多