我是OpenCv的新手,.I正在尝试开发一个使用OpenCv - 2.4.13自动检测文档的应用程序。在我的应用程序中,有一个检测文档的功能(类似于Scanbot应用程序),然后将其转换为document。到目前为止,我能够检测到文件使用opencv在景观模式。我需要的是显示应用程序的肖像模式。因为默认情况下,安卓的OpenCv工作在景观模式,我希望它在纵向模式。为此,我已经经历了很多解决方案,而且它也起作用了,但是性能下降问题,(比如摄像机帧慢下来)。到目前为止我所经历的是:旋转摄像机预览到肖像安卓OpenCV相机
将Android摄像头旋转到肖像
然而,我可以在肖像中改变相机的方向,但是由于一些性能下降的问题,
,有人成功地做到了吗?
我也在寻找的其他选项,以自动检测文件,除了OpenCv。我不知道是否可能没有OpenCv也有可能没有。
可以在没有OpenCv的情况下自动检测文档吗?怎么做?
发布于 2017-01-17 11:54:30
我也经历过同样的opencv问题,经过几个小时的研究,我终于找到了解决方案。您必须在默认的opencv类中进行更改。
遵循以下步骤: 1)在CameraBridgeViewBase类中添加以下代码
Matrix matrix = new Matrix();
matrix.setRotate(90f);
Bitmap bitmap = Bitmap.createBitmap(mCacheBitmap, 0, 0, mCacheBitmap.getWidth(), mCacheBitmap.getHeight(), matrix, true);2)现在,在with位图方法中,将位图替换为mCacheBitmap,如下所示
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方法中的以下代码(更改高度、宽度为肖像模式)
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之外,没有其他替代方法来自动检测对象
https://stackoverflow.com/questions/41628384
复制相似问题