Android OpenCV对象检测
我试图实现这样的东西:在android上 这是我的代码:Android OpenCV对象检测,android,opencv,image-processing,Android,Opencv,Image Processing,我试图实现这样的东西:在android上 这是我的代码: public Mat onCameraFrame(CvCameraViewFrame inputFrame) { Mat novo = new Mat(); Mat resp = new Mat(); Mat homer = new Mat(); //resp = inputFrame.gray(); novo = inputFrame.gray(); Mat lido = new Ma
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
Mat novo = new Mat();
Mat resp = new Mat();
Mat homer = new Mat();
//resp = inputFrame.gray();
novo = inputFrame.gray();
Mat lido = new Mat();
try {
lido = Utils.loadResource(this, R.drawable.homer);
} catch (IOException e) {
e.printStackTrace();
}
Imgproc.cvtColor(lido, homer, Imgproc.COLOR_RGB2GRAY);
FeatureDetector surf = FeatureDetector.create(FeatureDetector.FAST);
MatOfKeyPoint keypointsHomer = new MatOfKeyPoint();
MatOfKeyPoint keypoints = new MatOfKeyPoint();
surf.detect(homer, keypointsHomer);
surf.detect(novo, keypoints);
DescriptorExtractor SurfExtractor = DescriptorExtractor.create(FeatureDetector.SURF);
Mat descriptors = new Mat();
Mat homerDescriptors = new Mat();
SurfExtractor.compute(novo, keypoints, descriptors);
SurfExtractor.compute(homer, keypointsHomer, homerDescriptors);
DescriptorMatcher m = DescriptorMatcher.create(DescriptorMatcher.BRUTEFORCE);
MatOfDMatch matches = new MatOfDMatch();
m.match(descriptors, homerDescriptors, matches);
Features2d.drawMatches(novo, keypoints, homer, keypointsHomer, matches, resp);
return resp;
}
我得到了以下错误:
如果我尝试这样画关键点:
Features2d.drawKeypoints(novo, keypoints, resp);
Features2d.drawKeypoints(homer, keypointsHomer, resp);
两者都很好!
我做错了什么 我终于完成了!这里有一个与最终结果的链接。我希望这能在某种程度上帮助你,在GooglePlay上你可以看到关于这个项目的更多细节并下载源代码。请随意给我发封电子邮件。我用另一种方法解决了这个问题。我想功能2D.drawMatches在android上不起作用。可能只适用于JVM和android中不存在的组件。如果有人能证实我很感激。谷歌删除了该应用程序,但没有说明原因!=(但是源代码可以在我的网站quintao上与apk一起获得。信息结果:来源: