Я использую opencv- python 4.2.0.32 и Python 3.7.4.
Когда я вызываю train () для модели DTree, моя программа завершается с ошибкой:
terminate called after throwing an instance of 'std::length_error'
what(): vector::reserve
Aborted (core dumped)
Код работает, когда я использую модель KNearest вместо DTree. Это немного похоже на поведение, описанное здесь , но я использую более свежую версию OpenCV, так что, возможно, что-то еще происходит?
Пример кода для воспроизведения поведения:
import numpy as np
import cv2
samples = np.ndarray((5, 2), np.float32)
labels = np.zeros((5, 1), dtype=np.float32)
# This works
model_knn = cv2.ml.KNearest_create()
model_knn.train(samples=samples, layout=cv2.ml.ROW_SAMPLE, responses=labels)
# This terminates with an error
model_dtree = cv2.ml.DTrees_create()
model_dtree.train(samples=samples, layout=cv2.ml.ROW_SAMPLE, responses=labels)