Перейти к содержимому
Compvision.ru

Eugene840

Пользователи
  • Количество публикаций

    1
  • Зарегистрирован

  • Посещение

Репутация

0 Новичек

О Eugene840

  • Звание
    Новичок
  1. Пример matcher_simple в OpenCV2.2

    Здравствуйте. Не могу разобраться с примером matcher_simple в OpenCV2.2 (OpenCV2.2\samples\cpp\matcher_simple.cpp): #include <stdio.h> #include <opencv2/core/core.hpp> #include <opencv2/features2d/features2d.hpp> #include <opencv2/highgui/highgui.hpp> using namespace cv; void help() { printf("\nThis program demonstrates using features2d detector, descriptor extractor and simple matcher\n" "Using the SURF desriptor:\n" "\n" "Usage:\n matcher_simple <image1> <image2>\n"); } int main(int argc, char** argv) { if(argc != 3) { help(); return -1; } Mat img1 = imread(argv[1], CV_LOAD_IMAGE_GRAYSCALE); Mat img2 = imread(argv[2], CV_LOAD_IMAGE_GRAYSCALE); if(img1.empty() || img2.empty()) { printf("Can't read one of the images\n"); return -1; } // detecting keypoints SurfFeatureDetector detector(400); vector<KeyPoint> keypoints1, keypoints2; detector.detect(img1, keypoints1); detector.detect(img2, keypoints2); // computing descriptors SurfDescriptorExtractor extractor; Mat descriptors1, descriptors2; extractor.compute(img1, keypoints1, descriptors1); extractor.compute(img2, keypoints2, descriptors2); // matching descriptors BruteForceMatcher<L2<float> > matcher; vector<DMatch> matches; matcher.match(descriptors1, descriptors2, matches); // drawing the results namedWindow("matches", 1); Mat img_matches; drawMatches(img1, keypoints1, img2, keypoints2, matches, img_matches); imshow("matches", img_matches); waitKey(0); return 0; } Изначально не загружалось изображение через imread, проблему решил следующим способом: Ptr<IplImage> iplimg1 = cvLoadImage(argv[1], CV_LOAD_IMAGE_GRAYSCALE); Ptr<IplImage> iplimg2 = cvLoadImage(argv[2], CV_LOAD_IMAGE_GRAYSCALE); if(iplimg1.empty() || iplimg2.empty()) { return -1; } Mat img1(iplimg1); Mat img2(iplimg2); Далее при работе программы стала возникать ошибка в строке detector.detect(img1, keypoints1); - "vectors iterators incompatible". Связана ли данная ошибка с нестандартным методом загрузки изображения, или же ошибка возникает по другим причинам?
×