OpenCV flannh断言错误
OpenCV flann.h assertion Error
我写了一个程序,得到两张图片之间的匹配。这是代码。但如果我使用BruteForceMatcher>(不是flann)它工作。
#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 matchern"
"Using the SURF desriptor:n"
"n"
"Usage:n matcher_simple <image1> <image2>n");
}
int main()
{
Mat img1 = imread("C:\Users\Hayk\Desktop\source1.bmp", CV_LOAD_IMAGE_GRAYSCALE);
Mat img2 = imread("C:\Users\Hayk\Desktop\source2.bmp", CV_LOAD_IMAGE_GRAYSCALE);
if(img1.empty() || img2.empty())
{
printf("Can't read one of the imagesn");
return -1;
}
// detecting keypoints
SurfFeatureDetector detector(6000);
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
FlannBasedMatcher 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;
}
和这个错误后,我得到的程序
OpenCV Error: Assertion failed (dataset.type() == CvType<T>::type()) in unknown
function, file c:Usersvpworkocvopencvmodulesfeatures2d..flannincludeo
pencv2/flann/flann.hpp, line 105
谁能告诉我我做错了什么? 您的代码在Linux上运行良好,使用OpenCV 2.3.1a
我在使用c++ OpenCV的Windows接口时遇到了几个问题。当我必须使用Windows时,我使用C接口。
你说它是与BruteForceMatcher工作,但不是Flann。我创建了一个最小的例子。你能运行这个程序并告诉我,你是否得到了你在问题中得到的相同的错误?
我只是想把问题弄清楚。
#include <stdio.h>
#include <iostream>
#include "opencv2/core/core.hpp"
#include "opencv2/features2d/features2d.hpp"
#include "opencv2/highgui/highgui.hpp"
using namespace cv;
int main()
{
// Five descriptors with random values between 0 and 0.2
Mat descriptors(5, 64, CV_32FC1);
RNG rng;
rng.fill(descriptors, cv::RNG::UNIFORM, 0.0, 0.2);
// the query descriptor should yield a match in row 3 of the train descriptors
Mat query_descriptors;
query_descriptors.push_back(descriptors.row(3));
// Match using Brute Force. On your machine this should work.
BruteForceMatcher< L2<float> > brute_matcher;
vector<DMatch> matches;
brute_matcher.match(query_descriptors, descriptors, matches);
std::cout << "Brute Force Matcher: " << std::endl;
for(int i=0; i<matches.size(); ++i)
{
std::cout << matches[i].queryIdx << " <--> " << matches[i].trainIdx << std::endl;
}
// The code should fail here because we are now going to use the FlannBasedMatcher
std::cout << "Flann Based Matcher: " << std::endl;
FlannBasedMatcher matcher;
matcher.match(query_descriptors, descriptors, matches);
for(int i=0; i<matches.size(); ++i)
{
std::cout << matches[i].queryIdx << " <--> " << matches[i].trainIdx << std::endl;
}
return 0;
}
相关文章:
- 尝试使用 std::vector<std::thread时出现静态断言失败错误>
- 错误:断言失败 (src.type() == CV_8UC1) 在阈值中
- OpenCV 错误:断言失败 - 矩阵减去
- OpenCV 错误:断言在 cv::Mat 行 522 中失败
- C++ / CannyEdgeDetection.exe 已停止工作 代码块 /OpenCV 错误:断言失败
- ANN OPENCV错误断言失败了
- OpenCV 错误:断言失败(a_size.width == len)
- 在曲面中插入边-CGAL错误:断言冲突
- 错误 opencv 错误断言失败 (p [-1] <= 2) 是什么意思以及如何处理它?
- 在面中插入边缘 - CGAL 错误:断言冲突
- openCV 错误:断言失败 (scn == 3 || scn == 4) 在 cvtColor 函数中
- OpenCV 错误:断言失败.怎么办
- 错误:断言失败Allegro5 addons font text.c Line 77表达式字体
- OpenCV 错误:断言失败((img.depth() == CV_8U || img.depth() == CV_32
- OpenCV错误:断言在MixChannels(.)中失败
- OpenCV错误:断言失败,mat.cpp第537行
- roi的opencv错误断言
- OpenCV : 训练 SVM 错误 - 断言失败
- Opencv错误:断言失败
- 我正在尝试将灰度转换为更大的黑色图像.我得到这个错误OpenCV错误:断言失败