【问题标题】:about np.array convert size关于 np.array 转换大小
【发布时间】:2021-06-11 02:04:25
【问题描述】:

我使用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

【问题讨论】:

  • 我们怎么可能知道呢?我们不知道label 是什么。
  • label 类型为int。像 1 或 2 或 ...

标签: python numpy svm


【解决方案1】:

您将苹果与橙子进行比较。您将samples.sizelen(train_data) 进行比较。 numpy size 属性返回数组在所有维度上的总大小。 Python len 函数只会返回第一个维度的大小。我猜train_data 是一个 2527 x 3780 数组。其中len 是 2527,x.size 是 9552060。

【讨论】:

  • 谢谢。我得到了SVM model data is invalid, check sv_count, var_* and class_count tags in function 'cv::ml::SVMImpl::write'.你能帮我吗?
  • 不,请再问一个问题。这似乎很痛苦,但您需要提供新的详细信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-30
  • 1970-01-01
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多