首页 > 解决方案 > ValueError:使用序列设置数组元素。同时将 np 数组转换为 float32

问题描述

我拿了一堆图像将它们转换为灰色然后将它们存储到 img_data_list 然后我将它们转换为一个 numpy 数组一切正常,直到现在这里的部分代码有效

import cv2
import os
import numpy as np

people = ['s1', 's2']
num_classes = 2
img_data_list = []
labels = []
valid_images = [".jpg",".gif",".png"]

for index, person in enumerate(people):
  print(index)
  dir_path = 'I:\\project_face_detection\\face_detetion\\training_data\\' + person
  for img_path in os.listdir(dir_path):
    name, ext = os.path.splitext(img_path)
    if ext.lower() not in valid_images:
        continue

    img_data = cv2.imread(dir_path + '\\' + img_path)
    # convert image to gray
    img_data=cv2.cvtColor(img_data, cv2.COLOR_BGR2GRAY)
    img_data_list.append(img_data)
    labels.append(index)


img_data = np.array(img_data_list)

但是当我尝试将数组转换为 float32 数据类型时,我得到了 ValueError

img_data = img_data.astype('float32')

这是错误

 ValueError: setting an array element with a sequence.

这是我的图像的存储方式

- training_data
   - s1
       - 0.jpg
       - 1.jpg
   - s2
      - 0.jpg
      - ......

如果你们能以任何方式帮助我,我将不胜感激感谢您的调查:)。

标签: pythonnumpyopencv

解决方案


推荐阅读