我试图使用检测器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是早期声明的,问题是当dodetector->detect(img,kp)时;我不知道问题出在哪里,我正在尝试其他形式的do it,但在detect()的调用中全部崩溃。
我尝试使用BRISK,但在检测崩溃的调用中问题相同。我轻快地做了下一个简化:
Ptr < BRISK > detector = BRISK::create();
vector <KeyPoint> kp;
detector->detect(img,kp);
这让人恼火。
我在visual studio 2015中使用opencv 3,带有windows 10。
对不起我的英语,谢谢你的回答。
此错误在CV2版本4.2.0
中仍然存在。我同样尝试过用cv2.ORB()
初始化,收到了~00x5 error
,尝试了ORB_create()
,最终成功了!
好的,我用cmake和opencv_controib解决了为visual studio构建opencv的问题,如果有人有同样的问题,我会按照下一个链接的说明进行操作:
http://audhootchavancv.blogspot.in/2015/08/how-to-install-opencv-30-and.html