我试图使用探测器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。
对不起我的英文,谢谢你的回答。
答案 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()
并最终成功了!