opencv BOWKMeansTrainer Утверждение не удалось в cv :: kmeans python - PullRequest
0 голосов
/ 23 марта 2020

Я пытаюсь обучить классификатор с 10 до 15 примерами (да, очень мало обучающих примеров), для которых я позже буду использовать oneclasssvm или что-то подобное. Для этого я пытаюсь создать пакет визуальных слов с помощью дескриптора функции ORB.

Я подумал, что нужно извлечь функции из ORB и сгруппировать эти описания с помощью BOWKMeansTrainer, также предоставляемого opencv. Но возникли проблемы.

Итак, что я сделал:

  1. Инициализация
FLANN_INDEX_KDTREE = 0
index_params = dict(algorithm = FLANN_INDEX_KDTREE, trees = 5)
search_params = dict(checks = 50)
matcher = cv2.FlannBasedMatcher(index_params, search_params)

detect = cv2.ORB_create()
extract = cv2.ORB_create()  
bow_extract = cv2.BOWImgDescriptorExtractor(extract , matcher)
bow_train = cv2.BOWKMeansTrainer(6)
Извлеките Feautres и добавьте в контейнер kmeans
for imagein images:
    kp = detect.detect(image,None)
    kp, des = extract.compute(image, kp)
    bow_train.add(des)
Кластеризация извлеченных объектов для получения словаря
voc = bow_train.cluster()

Сообщение об ошибке:

error: OpenCV(3.4.2) C:\Miniconda3\conda-bld\opencv-suite_1534379934306\work\modules\core\src\kmeans.cpp:239: error: (-215:Assertion failed) data0.dims <= 2 && type == 5 && K > 0 in function 'cv::kmeans'

Я уже проверил все вставленные дескрипторы, и ни один из них не был пустым.

Кто-нибудь знает, что я делаю неправильно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...