【问题标题】:setPreviewSize in OpenCVOpenCV 中的 setPreviewSize
【发布时间】:2017-10-11 18:18:33
【问题描述】:

我正在开发一个使用 OpenCV 3.1.0 并显示相机预览的 Android 应用程序。最初,我们调用 setMaxFrameSize(640, 480) 是因为所需的处理量很大,而且我们不需要相机提供的最佳视频质量。该应用程序可以在除客户手机之外的所有设备上正常运行。经典故事吧?

确切的问题是,即使我们明确将最大帧大小设置为 640 x 480,但在他的设备 (Samsung 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 天后。没有找到任何解决方案。

【问题讨论】:

    标签: android opencv camera android-camera


    【解决方案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。可能这个 bug 已经在 camera2 API 中修复了。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 2018-05-19
      • 1970-01-01
      • 2016-10-16
      • 2014-04-20
      • 2013-10-02
      相关资源
      最近更新 更多