OpenCV竖屏问题---为何setDisplayOrientation(90)不生效?

OpenCV竖屏问题

为何camera.setDisplayOrientation(90)不生效?

相信研究OpenCV的同仁很多都试过竖屏问题,尝试过很多种方案,包括软件旋转并拉伸图像等等,效率也有高低——但是无论哪种方案性能都有损失,达不到系统相机哪种流畅的感觉。而在所有可能的方案中,camera.setDisplayOrientation(90)是最有可能不损失任何性能的,但是偏偏在代码中调用此方法不生效。

笔者经过测试发现:自己定制的相机中camera.setDisplayOrientation(90)是可以旋转图像到竖屏的,所以问题出在OpenCV上。

进一步研读代码发现:定制相机中,是申请一个SurfaceView,然后将其成员SurfaceHolder mSurfaceHolder交给相机来完成显示的——这时调用setDisplayOrientation就有效;而我们在实时处理数据时,得到的也是横屏的。
而在OpenCV中,它的图像其实是就是那个横屏数据自己转换、处理,然后也是进行拉伸之后显示在屏幕上。

结论:基于OpenCV4Android目前的结构,想通过setDisplayOrientation来实现实时旋转完全是努力错了方向。

猜你喜欢

转载自blog.csdn.net/fulszcd/article/details/55094528