【发布时间】:2014-09-24 17:51:42
【问题描述】:
我正在尝试在 iOS 上使用 OpenCV 进行对象检测。我正在使用this code sample from the documentation。
这是我的代码:
Mat src = imread("src.jpg");
Mat templ = imread("logo.jpg");
Mat src_gray;
cvtColor(src, src_gray, CV_BGR2GRAY);
Mat templ_gray;
cvtColor(templ, templ_gray, CV_BGR2GRAY);
int minHessian = 500;
OrbFeatureDetector detector(minHessian);
std::vector<KeyPoint> keypoints_1, keypoints_2;
detector.detect(src_gray, keypoints_1);
detector.detect(templ_gray, keypoints_2);
OrbDescriptorExtractor extractor;
Mat descriptors_1, descriptors_2;
extractor.compute(src_gray, keypoints_1, descriptors_1);
extractor.compute(templ_gray, keypoints_2, descriptors_2);
问题出在extractor.compute(src_gray, keypoints_1, descriptors_1); 行上,它使descriptors_1 始终为空。
src 和 templ 不为空。
有什么想法吗?
谢谢
【问题讨论】:
-
keypoints_1 是空的吗?
-
是的,
keypoints_1是空的。 -
那么你无法计算描述符,因此,descriptors_1 为空。
-
好的,如果有垫子,为什么
descriptors_1是空的? -
哪个 Mat 不是空的?如果您的意思是输入图像不是空的,那可能是因为检测器没有找到任何关键点。可能是因为里面没有显着点或者检测器的参数(例如minHessian)不合适。
标签: ios opencv object-detection orb