首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于OpenCv的文档检测在安卓系统中的应用

基于OpenCv的文档检测在安卓系统中的应用
EN

Stack Overflow用户
提问于 2017-01-13 06:10:20
回答 1查看 769关注 0票数 1

我是OpenCv的新手,.I正在尝试开发一个使用OpenCv - 2.4.13自动检测文档的应用程序。在我的应用程序中,有一个检测文档的功能(类似于Scanbot应用程序),然后将其转换为document。到目前为止,我能够检测到文件使用opencv在景观模式。我需要的是显示应用程序的肖像模式。因为默认情况下,安卓的OpenCv工作在景观模式,我希望它在纵向模式。为此,我已经经历了很多解决方案,而且它也起作用了,但是性能下降问题,(比如摄像机帧慢下来)。到目前为止我所经历的是:旋转摄像机预览到肖像安卓OpenCV相机

将Android摄像头旋转到肖像

然而,我可以在肖像中改变相机的方向,但是由于一些性能下降的问题,

,有人成功地做到了吗?

我也在寻找的其他选项,以自动检测文件,除了OpenCv。我不知道是否可能没有OpenCv也有可能没有

可以在没有OpenCv的情况下自动检测文档吗?怎么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-17 11:54:30

我也经历过同样的opencv问题,经过几个小时的研究,我终于找到了解决方案。您必须在默认的opencv类中进行更改。

遵循以下步骤: 1)在CameraBridgeViewBase类中添加以下代码

代码语言:javascript
复制
Matrix matrix = new Matrix();
matrix.setRotate(90f);
Bitmap bitmap = Bitmap.createBitmap(mCacheBitmap, 0, 0, mCacheBitmap.getWidth(), mCacheBitmap.getHeight(), matrix, true);

2)现在,在with位图方法中,将位图替换为mCacheBitmap,如下所示

代码语言:javascript
复制
if (mScale != 0) {
                canvas.drawBitmap(bitmap, new Rect(0,0,bitmap.getWidth(), bitmap.getHeight()),
                        new Rect((int)((canvas.getWidth() - mScale*bitmap.getWidth()) / 2),
                                (int)((canvas.getHeight() - mScale*bitmap.getHeight()) / 2),
                                (int)((canvas.getWidth() - mScale*bitmap.getWidth()) / 2 + mScale*bitmap.getWidth()),
                                (int)((canvas.getHeight() - mScale*bitmap.getHeight()) / 2 + mScale*bitmap.getHeight())), null);
            } else {
                canvas.drawBitmap(bitmap, new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()),
                        new Rect((canvas.getWidth() - bitmap.getWidth()) / 2,
                                (canvas.getHeight() - bitmap.getHeight()) / 2,
                                (canvas.getWidth() - bitmap.getWidth()) / 2 + bitmap.getWidth(),
                                (canvas.getHeight() - bitmap.getHeight()) / 2 + bitmap.getHeight()), null);
  }

3)现在,在您的JavaCameraView类中,替换initializeCamera方法中的以下代码(更改高度、宽度为肖像模式)

代码语言:javascript
复制
if ((getLayoutParams().width == ActionBar.LayoutParams.MATCH_PARENT) && (getLayoutParams().height == ActionBar.LayoutParams.MATCH_PARENT))
                    mScale = Math.min(((float)height)/mFrameWidth, ((float)width)/mFrameHeight); 
                else
                    mScale = 0;

你完蛋了!!

我不认为,除了OpenCv之外,没有其他替代方法来自动检测对象

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41628384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档