关于 np.array 转换大小
about np.array convert size
我使用np.array
转换列表,但大小不正确。
这是我的代码:
svm = create_SVM()
samples = np.array(train_data, dtype=np.float32)
response = np.array(labels, dtype=np.int32)
if samples.size != response.size:
raise ValueError(
f'sample.size != response.size!\nsample.size:{samples.size} response.size:{response.size} train_data:{len(train_data)}')
print('train start...')
svm.train(samples, cv.ml.ROW_SAMPLE, response)
svm.save("svm.yml")
// another function
img = cv.imread(path.join(filename, file), 0)
img = cv.resize(img, (64, 128))
hog = cv.HOGDescriptor()
hist = hog.compute(img)
data = np.array(hist, dtype=np.float32).reshape(1, -1)[0]
train_data.append(data)
labels.append(label)
结果是 ValueError: sample.size != response.size! sample.size:9552060 response.size:2527 train_data:2527
为什么 train_datasize
不等于 sample
?
您是在将苹果与橙子进行比较。您正在比较 samples.size
和 len(train_data)
。 numpy size
属性 returns 数组在所有维度上的总大小。 Python len
函数只会 return 第一维的大小。我猜 train_data
是一个 2527 x 3780 的数组。 len
是2527,x.size
是9552060.
我使用np.array
转换列表,但大小不正确。
这是我的代码:
svm = create_SVM()
samples = np.array(train_data, dtype=np.float32)
response = np.array(labels, dtype=np.int32)
if samples.size != response.size:
raise ValueError(
f'sample.size != response.size!\nsample.size:{samples.size} response.size:{response.size} train_data:{len(train_data)}')
print('train start...')
svm.train(samples, cv.ml.ROW_SAMPLE, response)
svm.save("svm.yml")
// another function
img = cv.imread(path.join(filename, file), 0)
img = cv.resize(img, (64, 128))
hog = cv.HOGDescriptor()
hist = hog.compute(img)
data = np.array(hist, dtype=np.float32).reshape(1, -1)[0]
train_data.append(data)
labels.append(label)
结果是 ValueError: sample.size != response.size! sample.size:9552060 response.size:2527 train_data:2527
为什么 train_datasize
不等于 sample
?
您是在将苹果与橙子进行比较。您正在比较 samples.size
和 len(train_data)
。 numpy size
属性 returns 数组在所有维度上的总大小。 Python len
函数只会 return 第一维的大小。我猜 train_data
是一个 2527 x 3780 的数组。 len
是2527,x.size
是9552060.