UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb3 in position 0: invalid start byte
注意两点:
encoding='gb18030' # 可以解决上述报错;
df.loc[] # 可以做条件修改,并新增列;
import cv2
import os
import pandas as pd
import numpy as np
from path import DATA_PATH
batch_size = 1
DATA_ID = 'BeijingGarbage'
NB_CLASSES = 4
# 读取数据
df = pd.read_csv(os.path.join(DATA_PATH, DATA_ID, 'train.csv'),encoding='gb18030')
# 将name列含有"可回收物"字符串,新增一列new_label,值为0
# loc[df['name'].str[0:4] #截取前4位字符串进行匹配,做条件修改
df.loc[df['name'].str[0:4]=='可回收物','new_label'] = '0'
df.loc[df['name'].str[0:4]=='厨余垃圾','new_label'] = '1'
df.loc[df['name'].str[0:4]=='有害垃圾','new_label'] = '2'
df.loc[df['name'].str[0:4]=='其他垃圾','new_label'] = '3'
image_path_list = df['image_path'].values
label_list = df['label'].values
print(df)
batch_x = []
batch_y = []
while len(batch_x) < batch_size:
index = np.random.randint(len(image_path_list))
img = cv2.imread(os.path.join(DATA_PATH, DATA_ID, image_path_list[index]))
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
label = np.zeros(NB_CLASSES)
label[label_list[index]] = 1
print(label)
img = cv2.resize(img, (224, 224))
batch_x.append(img)
batch_y.append(label)
cv2.imshow('frame', img)
cv2.waitKey()
|