OpenCV中的setPreviewSize

时间:2017-05-12 12:15:06

标签: android opencv camera android-camera

我正在开发一款使用OpenCV 3.1.0并显示相机预览的Android应用。最初,我们调用setMaxFrameSize(640,480),因为所需的处理很繁重,我们不需要摄像机提供的最佳视频质量。该应用程序在除客户端电话之外的每个设备上都能正常工作。经典故事吧?

确切的问题是,尽管我们明确将最大帧尺寸设置为640 x 480,但在他的设备(三星J3)上,分辨率将为1280 x 720.

我查看了OpenCV中的JavaCameraView文件并调用了getSupportedPreviewSizes。 640 x 480在该列表中。一切运作良好,我们设置了几个参数,最后我们调用了mCamera.setParameters(params);

该类的下一行是:params = mCamera.getParameters();

设置参数时,params.getPreviewSize()= 640 x 480。 在调用mCamera.getParameters()之后,params.getPreviewSize()将是1280 x 720.它只能在该设备上重现。

我已经在Nexus 6P,三星S6,三星平板电脑和几款手机上测试了应用程序,一切正常,分辨率为640 x 480.但在三星J3无论我设置什么分辨率,相机都会显示1280 x 720帧。

谢谢!

更新:2天后。没有找到任何解决方案。

1 个答案:

答案 0 :(得分:1)

这不是唯一具有相机预览尺寸错误的设备。参见例如 setPreviewSize does not work on Nexus 5 kitkat ,还有https://issuetracker.google.com/issues/36982218https://bugs.chromium.org/p/webrtc/issues/detail?id=4197

J3设备正在运行5.1.1(Lollipop),因此它应支持新的camera2 API,请参阅 Android camera android.hardware.Camera deprecated 。也许这个错误已在camera2 API中修复。

实际上,J3不是那么糟糕,至少它会在你调用Camera.getParameters()时报告真实的大小。我们有一个硬编码的“黑名单”设备没有正确显示他们的参数,并且每次我们的客户发生问题时都会更新它。列表很长;)