Ошибка OpenCV: неверный аргумент (байты должны быть 16, 32 или 64) в BriefDescriptorExtractorImpl

Я пытаюсь определить характерные точки с помощью SURF и дескриптор экстрактора с помощью BRIEF.

cv::Ptr<Feature2D> detector = xfeatures2d::SurfFeatureDetector::create(400);
Mat descriptors_img1, descriptors_img2;//-- Step 2: Calculate descriptors (feature vectors)
detector->detect(img1, kp1);
detector->detect(img2, kp2);

cv::Ptr<DescriptorExtractor> extractor = xfeatures2d::BriefDescriptorExtractor::create(400);

extractor->compute(img1, kp1, descriptors_img1 );
extractor->compute(img2, kp2, descriptors_img2 );

Но я получаю ошибку

OpenCV Error: Bad argument (bytes must be 16, 32, or 64) in BriefDescriptorExtractorImpl, file /home/user/opencv_contrib-3.2.0/modules/xfeatures2d/src/brief.cpp, line 185
terminate called after throwing an instance of 'cv::Exception'
what():  /home/user/opencv_contrib-3.2.0/modules/xfeatures2d/src/brief.cpp:185: error: (-5) bytes must be 16, 32, or 64 in function BriefDescriptorExtractorImpl

Может кто-нибудь объяснить об этой ошибке, а также как ее решить.
Я использую OpenCV3.2

3

Решение

BriefDescriptorExtractor(int bytes=32,bool use_orientation = false)

Первый аргумент должен быть байтов.
Поэтому из вашего кода удалите аргумент 400 и попробуйте. Первый аргумент должен быть 2 ^, а не 400.
измени свой код с

cv::Ptr<DescriptorExtractor> extractor = xfeatures2d::BriefDescriptorExtractor::create(400);

в

cv::Ptr<DescriptorExtractor> extractor = xfeatures2d::BriefDescriptorExtractor::create();
4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]