当前位置: 首页 > 知识库问答 >
问题:

有没有办法从图像列表创建Numpy数组?

李云
2023-03-14

我正试图从包含1768张图片的列表中创建numpy数组。这是我的代码:

w = []
directory = os.listdir(PATH)
directory = sorted(directory, key=len)
for item in directory:
    img = Image.open(os.path.join(PATH, item))
    w.append(img)
    count+=1
print('w_shape: ', np.array(w, dtype='float32').shape)

当运行它时,我面临这个错误:

TypeError: float() argument must be a string or a number, not 'JpegImageFile'

有人能帮我解决吗?

共有1个答案

姜奇
2023-03-14

您会收到这个错误,因为列表中的每个元素都是JpegImageFile,它与浮动()不兼容。要避免这个错误,请直接将图像作为数组添加到列表中。
您可以使用np.asarray()将图像读取为Numpy数组。请查看下面的代码片段:

w = []
directory = os.listdir(PATH)
directory = sorted(directory, key=len)
for item in directory:
    img = Image.open(os.path.join(PATH, item))
    w.append(np.asarray(img)) # convert it to an array of floats
    count+=1 
print('w_shape: ', np.array(w, dtype='float32').shape)

注意:您也可以使用np.array(img)来代替。看看这里有什么不同

 类似资料:
  • 问题内容: 众所周知,Java总是在创建时初始化数组。即总是返回一个所有元素= 0的数组。我知道这对于对象数组是必须的,但是对于原始数组(可能是布尔型),在大多数情况下,我们并不关心初始值。 有人知道避免这种初始化的方法吗? 问题答案: 我已经做了一些调查。没有合法的方法在Java中创建未初始化的数组。甚至JNI NewXxxArray也会创建初始化的数组。因此,不可能确切知道数组清零的成本。尽管

  • 问题内容: 上面的问题是参考上面线程中描述的内容。有这么多的API,可以灵活地返回XML或JSON响应。我想知道是否有一种方法可以自动构造与JSON响应相对应的java bean。 问题答案: 假设您得到一个类似 你想要一个像 使用getter和setters的一种方法是使用JSONGen之类的服务,它将创建该类。您需要使用它 第一 ,并在项目中包含生成的代码。另一种选择可能是动态生成使用了Jav

  • 我有一个非常简单的练习,我注册客户端名称(字符串),我使用数组来做到这一点,所以当我添加一个新的我将使用另一个辅助数组,然后增加原来的长度,或者我将使用System.array复制,有没有其他方法,逐渐增加数组长度,因为你需要添加元素到该数组,不涉及辅助数组?

  • 问题内容: 我想一次从redis列表中弹出所有列表项。 我不想在列表为空时调用或方法,因为它似乎多次无效地将请求发送到。 我也知道我可以使用方法获得所有列表,但不能弹出项目。 你能建议我吗? 我只想和清单中的项目一个请求即可。 问题答案: 正如Itamar Haber所说,请使用lrange和del。在管道模式下,它将作为单个命令完成。

  • 我对Clojure和函数式编程很陌生,我试图使用两个函数将一些字符连接到一个字符串中。我的想法基本上是这样的: 因此,我的想法是从函数send开始,并作为参数编写一个字符列表,如下所示: 带有get sent的receive函数一次发送一个字符,并使用str将它们添加到一起,我的最终输出是:“hello”。 当我尝试运行代码时,会出现以下错误:automata处的执行错误(ClassCastExc