2015-10-14 19 views
0

我已经在Python中用OpenCV和Kivy为UI构建了图像识别应用程序。基本上,该应用程序的目的是识别棋盘游戏中使用的一组牌,并在屏幕上显示HD数字版本(附加信息)。OpenCV图像识别应用程序:非常好的结果在桌面上,但不是在Android

它使用ORB进行特征检测和描述,使用Flann进行特征匹配。一切工作正如我想在桌面上(Ubuntu 14.10和Windows 7和8),这意味着我没有误报。

当我为Android构建应用程序(使用buildozer和Kivy的最后一个版本)时,一切都编译良好,应用程序运行良好。问题是,认识似乎完全搞砸了:我现在只有误报! Android和桌面上的代码几乎完全相同(为了提高性能,我只是不太频繁地检查数据库),并且我在两个平台上都使用了Kivy Camera widget来获取预览。

我的猜测是它来自Kivy在Android(camera_android.py)和Ubuntu(camera_pygst.py)上使用的不同相机供应商,但也许我错了。

另一个主角是做某种相机校准,但我不知道该怎么做。也许通过调整android.hardware.Camera参数?

是否有人提供有关两个平台上的应用程序行为如此不同的线索?

+0

你是否在桌面版上使用了一些尺寸限制?例如最小/最大ORB检测“八度”(不确定ORB是否也称为八度音阶)?这两个平台的图像分辨率是否有所不同?在执行算法之前,您可以尝试调整android图像大小以适应桌面图像分辨率吗? – Micka

+0

不,图像分辨率是一样的,所以不需要调整大小。我没有在桌面上使用一些大小限制。你认为它可以帮助吗? – user3182659

回答

2

我在使用opencv的videocapture方法时遇到同样的问题。我的解决方案是使用plyer模块(https://github.com/kivy/plyer)。从plyer导入相机,这将有助于解决您的问题。 BTY,你想分享你的代码

相关问题