在opencv中崩溃检测功能(ORB和BRISK)

时间:2015-11-11 12:29:57

标签: exception-handling detect opencv3.0 orb brisk

我试图使用探测器ORB获取图像中的关键点,但总是得到异常并崩溃,我的代码是下一个。

vector < KeyPoint > kp;

int nfeatures = 500;
float scaleFactor = 1.2f;
int nlevels = 8;
int edgeThreshold = 15;
int firstLevel = 0;
int WTA_K = 2;
int scoreType = ORB::HARRIS_SCORE;
int patchSize = 31;
int fastThreshold = 20;

Ptr < ORB > detector = ORB::create(
    nfeatures,
    scaleFactor,
    nlevels,
    edgeThreshold,
    firstLevel,
    WTA_K,
    scoreType,
    patchSize,
    fastThreshold );

detector->detect(img, kp);
cout << "Found " << kp.size() << " Keypoints " << std::endl;

Mat out;
drawKeypoints(img, kp, out, Scalar::all(255));

imshow("Kpts", out);

img被宣布为早期,问题是何时进行检测 - >检测(img,kp);而且我不知道问题是什么,我尝试了其他形式的做法,但是在调用detect()时都崩溃了。

我尝试使用BRISK,并且在检测崩溃的调用中问题是相同的。 随着活跃,我做了下一个简化:

Ptr < BRISK > detector = BRISK::create();
vector <KeyPoint> kp;
detector->detect(img,kp);

这令人生气。

我在visual studio 2015中使用opencv 3和windows 10。

对不起我的英文,谢谢你的回答。

2 个答案:

答案 0 :(得分:0)

好的,我解决了使用cmake和opencv_contrib为visual studio构建opencv的问题,如果有人遇到同样的问题,我会按照下一个链接的说明进行操作:

http://audhootchavancv.blogspot.in/2015/08/how-to-install-opencv-30-and.html

答案 1 :(得分:0)

该错误今天在CV2版本4.2.0中仍然存在。我同样尝试使用cv2.ORB()进行初始化,收到~00x5 error,尝试了ORB_create()并最终成功了!