简体   繁体   English

在Python中使用astype('float32')时出错

[英]Error when using astype('float32') in Python

I'm newbie in python and working with this code: 我是python的新手,正在使用以下代码:

for index, person in enumerate(people):
  print(index)
  dir_path = 'train/' + 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)
img_data = img_data.astype('float32')

But when runing I get error : 但是在运行时出现错误:

img_data = img_data.astype('float32') ValueError: setting an array element with a sequence.

Can anyone help me solve this? 谁能帮我解决这个问题?

Iterate through your list: 遍历您的列表:

At the end of your code you appear to be trying to change the dtype of the images you have stored in your list. 在代码末尾,您似乎正在尝试更改存储在列表中的图像的dtype Images read with OpenCV are naturally numpy arrays. 用OpenCV读取的图像自然是numpy数组。

The following example should help: 以下示例应有帮助:

# create a test image list
img = np.ones((60,60), dtype=np.uint8)
img_list = [img] * 4

# use a list comp to run through the images and change dtype
changed_img_list = [img.astype(np.float32) for i in img_list]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM