【发布时间】:2015-02-16 17:34:45
【问题描述】:
我正在尝试使用 Opencv FAST 检测器在 Android 中设置阈值。我发现了一个类似的已解决问题here。我已经按照建议在检测方法之后列出了关键点列表,但仍然对我不起作用。就我而言,我想检测相机框架上的关键点:
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
MatOfKeyPoint points = new MatOfKeyPoint();
Mat mat=inputFrame.rgba();
FeatureDetector fast = FeatureDetector.create(FeatureDetector.FAST);
fast.detect(mat, points);
// Sort and select 500 best keypoints
List<KeyPoint> listOfKeypoints = points.toList();
Collections.sort(listOfKeypoints, new Comparator<KeyPoint>() {
@Override
public int compare(KeyPoint kp1, KeyPoint kp2) {
// Sort them in descending order, so the best response KPs will come first
return (int) (kp2.response - kp1.response);
}
});
List<KeyPoint> listOfBestKeypoints = listOfKeypoints.subList(0, 500);
points.fromList(listOfBestKeypoints);
Scalar redcolor = new Scalar(255,0,0);
Mat mRgba= mat.clone();
Imgproc.cvtColor(mat, mRgba, Imgproc.COLOR_RGBA2RGB,4);
Features2d.drawKeypoints(mRgba, points, mRgba, redcolor, 3);
return mRgba;
}
问题是我的 listOfKeypoints 仍然为空。如果我不尝试设置阈值,代码可以正常工作,但速度太慢。
我在这里做错了什么?
谢谢。
【问题讨论】:
标签: java android performance opencv