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

问题描述 投票:1回答:2

我想用detector 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是提前声明的,问题是当做 detector->detect(img, kp);我不知道问题出在哪里,我在尝试其他形式的操作,但都在调用 detect()时崩溃。

我试着用BRISK做,问题也是一样的,在调用detect时崩溃。

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

这真让人恼火.

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

对不起,我的英语和感谢你的回答。

exception-handling detect opencv3.0 orb brisk
2个回答
0
投票

好吧,我解决了我的问题,用cmake和opencv_contrib为visual studio构建opencv,如果有人有同样的问题,我按照下面链接的说明去做。

http:/audhootchavancv.blogspot.in201508how-to-install-opencv-30-and.html。


0
投票

该错误在CV2版本中继续存在 4.2.0 今天的实际。我同样尝试用 cv2.ORB(),收到 ~00x5 error,尝试 ORB_create() 最终成功了!

© www.soinside.com 2019 - 2024. All rights reserved.