Android 中的相机预览质量很差

2023-12-14

我正在 Android 中制作一个相机应用程序,并使用以下函数来获取预览尺寸:

private Size getOptimalPreviewSize(List<Size> sizes, int w, int h) {
    final double ASPECT_TOLERANCE = 0.1;
    double targetRatio = (double) w / h;
    if (sizes == null) return null;

    Size optimalSize = null;
    double minDiff = Double.MAX_VALUE;

    int targetHeight = h;

    // Try to find an size match aspect ratio and size
    for (Size size : sizes) {
        double ratio = (double) size.width / size.height;
        if (Math.abs(ratio - targetRatio) > ASPECT_TOLERANCE) continue;
        if (Math.abs(size.height - targetHeight) < minDiff) {
            optimalSize = size;
            minDiff = Math.abs(size.height - targetHeight);
        }
    }

    // Cannot find the one match the aspect ratio, ignore the requirement
    if (optimalSize == null) {
        minDiff = Double.MAX_VALUE;
        for (Size size : sizes) {
            if (Math.abs(size.height - targetHeight) < minDiff) {
                optimalSize = size;
                minDiff = Math.abs(size.height - targetHeight);
            }
        }
    }
    return optimalSize;
}

我这样设置尺寸:

Size s = getOptimalPreviewSize(parameters.getSupportedPreviewSizes(), w, h);
parameters.setPreviewSize(s.width, s.height);

但问题是,当我运行我的应用程序时,相机预览质量非常差。如何获得与在手机上运行默认相机应用程序时获得的预览质量相同的预览质量,换句话说,我想在我的应用程序中获得高分辨率相机预览。

我什至不确定预览大小是否是导致此问题的原因。

注意:获取预览尺寸的函数取自Android Docs的示例程序。


该算法不是最伟大的。

默认算法为我的 CWAC 相机库 is now:

  public static Camera.Size getBestAspectPreviewSize(int displayOrientation,
                                                     int width,
                                                     int height,
                                                     Camera.Parameters parameters,
                                                     double closeEnough) {
    double targetRatio=(double)width / height;
    Camera.Size optimalSize=null;
    double minDiff=Double.MAX_VALUE;

    if (displayOrientation == 90 || displayOrientation == 270) {
      targetRatio=(double)height / width;
    }

    List<Size> sizes=parameters.getSupportedPreviewSizes();

    Collections.sort(sizes,
                     Collections.reverseOrder(new SizeComparator()));

    for (Size size : sizes) {
      double ratio=(double)size.width / size.height;

      if (Math.abs(ratio - targetRatio) < minDiff) {
        optimalSize=size;
        minDiff=Math.abs(ratio - targetRatio);
      }

      if (minDiff < closeEnough) {
        break;
      }
    }

    return(optimalSize);
  }

This:

  • 考虑纵向与横向

  • 从最高分辨率预览开始,然后逐步降低

  • 可以通过定制closeEnough选择更高分辨率,而不是最佳匹配预览区域的纵横比

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 中的相机预览质量很差 的相关文章

  • 与其他图标相比,AppCompat ShareActionProvider 图标太大

    我将 ActionBarSherlock 更改为 AppCompat v7 我已经完成了使其工作所需的所有更改 但是共享图标 使用 ShareActionProvider 发生了一些奇怪的情况 与其他图标相比 共享图标太大 我还使用支持库进
  • ProGuard 无法与 Windows 中使用的 Joda Time 一起编译

    实际上 这是一个答案 而不是一个问题 我确实在 Windows 上花了很多时间 使用 JodaTime 并使用 ProGuard 将其包含在我的 Android 项目中 混淆器配置 libraryjars C Users Reto Docu
  • FileNotFoundException:/存储/模拟/0/Android

    我尝试这个文件写入器 读取器代码段进行测试 File file new File Environment getExternalStorageDirectory LM lm lisdat 01 txt FileOutputStream ou
  • Firestore - RecycleView - 图像持有者

    我不知道如何编写图像的支架 我已经设置了 2 个文本 但我不知道图像的支架应该是什么样子 你能帮我告诉我图像的文字应该是什么样子才能正确显示吗 holder artistImage setImageResource model getArt
  • 如何从 Retrofit2 获取字符串响应?

    我正在做 android 正在寻找一种方法来执行超级基本的 http GET POST 请求 我不断收到错误 java lang IllegalArgumentException Unable to create converter for
  • 以编程方式更新 Android 中的联系人姓名和电话号码

    我创建一个应用程序来读取 更新 删除联系人详细信息 这是更新联系人姓名和电话号码的问题 有人可以帮助我吗 我该怎么做 我正在使用以下代码 但它不起作用 Override public View onCreateView LayoutInfl
  • 尝试在模拟器上安装第二个 flutter 应用程序时出错

    我创建了一个简单的 flutter 应用程序并在 android 模拟器上运行它 效果还不错 现在我创建了另一个 当我尝试在模拟器上运行它时 我得到 Error ADB exited with exit code 1 adb failed
  • 如何强制从本机代码打开 Android 软键盘?

    我有一个游戏 当用户触摸屏幕时 它使用从 C 到 Java 的回调来强制打开软键盘 Java代码很简单是这样的 this inputMethodManager toggleSoftInput InputMethodManager SHOW
  • 如何防止布局的方向改变,而不是整个屏幕/活动的方向改变

    我需要一个子布局 可以是任何布局 例如FrameLayout or RelativeLayout 忽略方向变化并始终保持横向 但不是它的父级或任何其他兄弟布局 视图 它们应该相应地改变它们的方向 因此 我不能使用setRequestedOr
  • Firebase ANR - 甚至不使用 firebase

    随着 GMS 的最新更新 引入了新的 ANR 如果您退出应用程序 然后返回 则 ANR 就会初始化 线程跟踪似乎指向 Firebase 但我什至从未开始使用 Firebase 我猜它一定是新的 GMS 包的一部分 06 11 00 34 0
  • Android - 如何更改 TimePicker 中的文本颜色?

    我正在使用 TimePicker 到 LinearLayout 中 背景颜色 黑色 但是 我看不到 TimePicker 中的数字 并且我需要在布局中将背景颜色设置为黑色 如何更改 TimePicker 中的 textColor 我已经尝试
  • Espresso 和 Proguard 的 Java.lang.NoClassDefFoundError

    我对 Espresso 不太有经验 但我终于成功地运行了它 我有一个应用程序需要通过 Proguard 缩小才能处于 56K 方法之下 该应用程序以 3 秒的动画开始 因此我需要等到该动画结束才能继续 这就是我尝试用该方法做的事情waitF
  • 在Android Studio中更改项目主题?

    我使用浅色主题创建了一些项目 现在我想将其更改为深色 但我不知道该怎么做 顺便说一句 我不是问如何在代码中做到这一点 只是问如何更改项目的默认主题 在 AndroidManifest xml 的 application 标签下 您可以设置您
  • Nexus 7 (2013) 和 Win 7 64 - 尽管检查了许多论坛和在线资源,仍无法安装 USB 驱动程序

    我正在尝试设置 Nexus 7 2013 进行调试 但我在安装 USB 驱动程序的步骤中陷入困境 到目前为止 这是我尝试过的 采取的步骤 在 Nexus 7 2013 上打开调试模式 连接设备至 PC 下载 Google USB 驱动程序于
  • JSON 到 hashmap (杰克逊)

    我想将 JSON 转换为 HashMapJackson http jackson codehaus org 这是我的 JSON String json Opleidingen name Bijz trajecten zorg en welz
  • 安卓的限制

    我需要构建一个应用程序 该应用程序拍摄相机图像并将其上传到网络 在网络上进行一些处理并返回真 假 我在这方面遇到了一些问题 希望得到澄清 1 我的应用程序有什么方法可以知道 Android 相机捕获的图像吗 我从这里明白了什么 Androi
  • 按字母顺序过滤 Firestore 数据以对 Google Cloud 中的文档读取进行分类/减少

    基于这样的事实Cloud Firestore 不支持全文搜索 https firebase google com docs firestore solutions search到目前为止 我决定问这个question https stack
  • 在 Android 中使用 iText 将图像添加到特定位置

    我想使用 Android 中的 iText 将图像添加到 PDF 文件中的特定位置 这是一个可填写的表单 我添加了作为图像占位符的文本框 我想要做的就是像这样获取该文本框和图像 public class FormFill public st
  • Android 和 Java 中绘制椭圆的区别

    在Java中由于某种原因Ellipse2D Double使用参数 height width x y 当我创建一个RectF在Android中参数是 left top right bottom 所以我对适应差异有点困惑 如果在 Java 中创
  • 当ScrollView滚动到底部时加载更多数据

    我有一个带有动态加载内容的滚动视图 有时可能会有很多内容 所以我想在用户滚动到底部时加载更多内容 我搜索了合适的方法 发现了两种 onScrollChanged and getScrollY 但我不知道如何将它用于我的目的 请给我一些建议

随机推荐

  • 如何在 jQuery ajax 中从一个按钮调用多个 url?

    是否可以通过 jQuery 中的按钮调用两个 url 例如 我也想添加评论的内容 我该如何代表他们 ajax url ajax releaseBackEnd php url batch 2 release tmp php type POST
  • 如何在 JQuery 调用中使用变量

    我在尝试着 function doRow rowNum ajax url z html cache false success function html result rowNum append html 这似乎不起作用 当我做到这一点时
  • ng-transclude 内的 ng-model

    我使用时遇到问题ng model inside ng transclude As ng transclude创建子作用域 该值不能再设置为外部作用域 没有 ng transinclude 一切正常 text div div
  • 在 CardView 布局中运行媒体文件

    有没有办法获得媒体文件 audio video 运行在cardview布局 我想要一个videoa 内文件的预览card layout 当用户点击卡片时video audio全屏播放 就像 Facebook 的 feed 一样 为了获得这种
  • 如何在R中过滤数据?

    我有巨大的数据集 其中包含超过数百万行 并且具有一些特殊的属性 我需要过滤保留其其他属性的数据 我的数据如下 ID Prop1 Prop2 TotalProp 56891940 G02 G02 2 56892558 A61 G02 4 56
  • 如何加载具有依赖项的 JNI .dylib 文件而不出现 UnsatifiedLinkError?

    Goal 将 Java 链接到 Swift Problem 我得到一个UnsatisfiedLinkError当尝试加载 JNI 时 dylib与 Swift 链接的文件 dylib调用时文件System loadLibrary Strin
  • 使用 htmlparser python 获取标签下的html

    我想在标签下获取整个 html 并使用 HTMLParser 我当前能够获取标签之间的数据 以下是我的代码 class LinksParser HTMLParser def init self HTMLParser init self se
  • Android 中如何模糊背景图像

    模糊背景图像 如下图所示 的最佳方法是什么 我看到了一些代码和库 但有几年前的或类似 Blur Behind 库 但它没有给出相同的效果 最简单的方法是使用库 看看这个 https github com wasabeef Blurry 使用
  • 如何从C++文件中读取空格分隔的信息

    在文本文件中 我将有一行包含一系列数字 每个数字用空格分隔 我如何读取这些数字并将它们全部存储在一个数组中 std ifstream file filename std vector
  • 多次加入同一张表

    我可能有点笨 希望有人能帮忙 我有一个简单的 2 列用户表 ID 用户名 我有一个图像评论表 COMMENT COMMENTFROM COMMENTTO COMMENTFROM 是发表评论的用户的 ID COMMENTTO 是添加评论的图像
  • 在 MS Access 中引用可重用表单(2 层)

    我有多个成员 每个成员都有一条包含多个备注字段的记录 Member ID Entry A Entry B 1 memo text memo text 2 memo text memo text 3 memo text memo text 在
  • 在嵌套类中,如何从Python中的嵌套类访问外部类的元素?

    我有这样的场景 我需要要求嵌套类将项目附加到外部类中的列表中 这是伪代码 与我尝试做的类似 我该如何让它发挥作用 class Outer object outerlist class Inner object def call self a
  • 如何在 R 代码中将数据框旋转到二级标题上

    I m still new to R and I ve been struggling with this issue for a couple of days I found some solutions but I m looking
  • Struts2 ActionContext 和 ValueStack?

    我的问题是 在Struts2中 是不是每个action对象都有自己对应的ActionContext和ValueStack呢 换句话说 对于每个新请求 都会创建一个新的操作对象 这是否意味着每次创建新的操作对象时 也会创建新的 ActionC
  • 如何使用 Xcode 4.5 为 iPhone 4 和 iPhone 5 创建 xib

    我已将部署目标设置为 iOS 4 3 并使用 xib 创建视图控制器 但 XCode 4 5 仅为 iPhone 5 4 英寸 创建 xib 如何为 iPhone 4 创建单独的 xib 在视图属性检查器的 模拟指标 部分中 您可以选择 3
  • 如何获取我在 Jquery Tabs UI 中命名的当前选项卡标题

    我在用着http jqueryui com demos tabs manipulation 我想获取我之前命名的当前选定选项卡的标题 例如 来自 href 如何获得 我试过 ui tab attr href 获取选项卡标题的替代方法 var
  • shell 脚本中 test / [ 中的 -d、-e 和 -f 标志有什么区别?

    有什么区别 d e f在 shell 脚本中 我试图理解之间的区别 e d and f参数 例子 if d path if e path if f path 据我所知 d检查目录是否存在 e检查目录和内容 如果目录存在且包含内容则返回 tr
  • Selenium - send_keys() 发送不完整的字符串

    我的问题 我有一个填充字段的方法 但问题是 selenium 没有将完整的字符串发送到该字段 所以我的断言在验证时失败 My code var webdriver require selenium webdriver var casual
  • ios接收udp广播包

    我几乎完全完成了 REST 服务的 iOS 客户端 我唯一缺少的是客户端能够在网络上侦听 UDP 广播 该广播接收主机显示名称和上传的基本 URL 网络上可能有多个服务器正在广播并等待上传 异步是首选 当设备发现服务器时 服务器将显示给用户
  • Android 中的相机预览质量很差

    我正在 Android 中制作一个相机应用程序 并使用以下函数来获取预览尺寸 private Size getOptimalPreviewSize List