DreamCamera2相机预览变形的处理
最近遇到一个问题,相机更换了摄像头后,发现人像角度顺时针旋转了90度,待人像角度正常后,发现 预览时图像有挤压变形,最终解决。在此记录
一人像角度的修改
先放示意图

设备预览人像角度如图1所示,顺时针旋转了90,正常效果如图2 修改如下:
//文件路径: /device/sprd/qogirn6l/ums9158_1h10/ums9158_1h10/module/camera/sensor_config.xml
Date: Wed Nov 27 18:02:01 2024 +0800修复顺时针旋转90度摄像头预览Change-Id: Ife0a46fe32ffd2c213d0ba0ab1eba07be50c8055diff --git a/ums9158_1h10/module/camera/sensor_config.xml b/ums9158_1h10/module/camera/sensor_config.xm
l
index 20031a4..60aa732 100755
--- a/ums9158_1h10/module/camera/sensor_config.xml
+++ b/ums9158_1h10/module/camera/sensor_config.xml
@@ -6,7 +6,7 @@<SlotId>0</SlotId><SensorName>ov8858_ft18</SensorName><Facing>BACK</Facing>
- <Orientation>270</Orientation>
+ <Orientation>180</Orientation>^M<Resource_cost>100</Resource_cost><TuningParameter><TuningName>ov8858_main_ft18</TuningName>
如上修改,,可以相机后摄像头预览时人像角度(前摄也应该在改文件中,找front选项和对应项目名称)
二相机预览时图像挤压变形
步骤一完成后,图像角度正常了,但是内容挤压变形了。效果如下所示
图1
图2
如上图,左侧图1时被挤压时效果,右图2是修改后正常效果。
刚开始以为问题再驱动层,和同事沟通后发现,应该在应用层,相机设置里个比例设置,默认全屏模式,只是比例有问题。然后看源码,角度不对的时候无挤压,旋转后有挤压,说明比例反了(设备屏幕宽高比)做此判断,如下修改
~~思路:默认只是角度不对,但是没有挤压,说明原有的比例和屏幕比例一致所以正常;
旋转了角度,图像比例和屏幕比例不一致,导致挤压,根据源码,将其比例反过来就可以了~~。
-----------------------------------20241129 update--------------------------
比例不对这个判断是对的。将宽高比换下,经过测试也是不对的。屏幕是长x款 是640x480 比例为4:3.旋转后还是又拉长的。只能使用1:1.上面的图2 效果图也是1:1比例,而不是全屏。修改是是删除其他比例选项只保留1:1选项。
-----------------------update end-----------------------
(可以在设置中选择1:1比例图像正常,说明 比例问题)
vendor/sprd/platform/packages/apps/DreamCamera2/src/com/android/camera/settings$ git diff
diff --git a/src/com/android/camera/settings/ResolutionUtil.java b/src/com/android/camera/settings/ResolutionUtil.java
index 432e28d0..cbe823ff 100644
--- a/src/com/android/camera/settings/ResolutionUtil.java
+++ b/src/com/android/camera/settings/ResolutionUtil.java
@@ -39,6 +39,8 @@ import java.util.HashSet;import java.util.LinkedList;import java.util.List;import java.util.Set;
+import com.android.camera.debug.Log;
+import javax.annotation.Nonnull;import javax.annotation.ParametersAreNonnullByDefault;
@@ -52,6 +54,9 @@ import javax.annotation.ParametersAreNonnullByDefault;* user with so many options.*/public class ResolutionUtil {
+
+ private static final Log.Tag TAG = new Log.Tag("ResolutionUtil");
+/*** Different aspect ratio constants.*/
@@ -75,14 +80,20 @@ public class ResolutionUtil {Point point = new Point();Display d = activity.getWindowManager().getDefaultDisplay();d.getRealSize(point);mFullScreenSize = point.x > point.y ? new Size(point.x, point.y) : new Size(point.y, point.x);+ Log.e(TAG, "setDesiredAspectRatio, point.x:" + point.x+",point.y:" + point.y);
+ Log.e(TAG, "setDesiredAspectRatio, mFullScreenSize:" + mFullScreenSize);// sDesiredAspectRatioSizes.add(new Size(4,3));//sDesiredAspectRatioSizes.add(mFullScreenSize);sDesiredAspectRatioSizes.add(new Size(1,1));// sDesiredAspectRatios.add(4.0f / 3.0f);+ Log.e(TAG, "setDesiredAspectRatio, mFullScreenSize.width():" + mFullScreenSize.width() +",mFullScreenSize.height():" + mFullScreenSize.height());
+ Log.e(TAG, "setDesiredAspectRatio, mFullScreenSize.width() / (float) mFullScreenSize.height()=" + mFullScreenSize.width() / (float) mFullScreenSize.height());
+
+ // sDesiredAspectRatios.add(mFullScreenSize.width() / (float) mFullScreenSize.height());sDesiredAspectRatios.add(1.0f / 1.0f);settled = true;}
测试通过over!
ps:怎么判断当前的应用在项目中那个路径,可以看我的历史文章
[转]Android寻找某个包在aosp下的路径
相关文章:
DreamCamera2相机预览变形的处理
最近遇到一个问题,相机更换了摄像头后,发现人像角度顺时针旋转了90度,待人像角度正常后,发现 预览时图像有挤压变形,最终解决。在此记录 一人像角度的修改 先放示意图 设备预览人像角度如图1所示,顺时针旋…...
Mysql误删表中数据与误删表的恢复方法
查看数据库是否开启binlog日志 mysql> show variables like %log_bin%; ------------------------------------------------------------------------ | Variable_name | Value | ------------------------------------…...
lapack、blas、solver库的区别和联系
LAPACK、BLAS、Solver 库 是数值计算领域的重要组成部分,它们各自的功能和设计目标有所不同,但也存在密切的联系。 1. 概述 库主要功能设计目标BLAS提供基础的线性代数操作,如向量运算、矩阵-向量乘法、矩阵-矩阵乘法等。提供高度优化的基础线性代数操作,作为更高级库的底层…...
deepin 安装 chrome 浏览器
deepin 安装 chrome 浏览器 最近好多小伙伴儿和我说 deepin 无法安装最新的谷歌浏览器 其实是因为最新的 谷歌浏览器 其中的一个依赖需要提前安装 提前安装依赖然后再安装谷歌浏览器就可以了 安装 fonts-liberationsudo apt -y install fonts-liberation安装 chrome 浏览器sudo…...
永久免费的PDF万能水印删除工具
永久免费的PDF万能水印删除工具 1.简介 PDF万能水印删除工具,可以去除99.9%的PDF水印。例如:XObject水印(含图片水印)、文本水印、绘图水印/曲线水印、注释水印、工件水印、剪切路径水印等等。本软件是永久免费,无有…...
Linux网络——NAT/代理服务器
一.NAT技术 1.NAT IP转换 之前我们讨论了, IPv4 协议中, IP 地址数量不充足的问题,NAT 技术就是当前解决 IP 地址不够用的主要手段, 是路由器的一个重要功能。 NAT 能够将私有 IP 对外通信时转为全局 IP. 也就是一种将私有 IP 和全局IP 相互转化的技术方法: 很…...
大米中的虫子检测-检测储藏的大米中是否有虫子 支持YOLO,VOC,COCO格式标注,4070张图片的数据集
大米中的虫子检测-检测储藏的大米中是否有虫子 支持YOLO,VOC,COCO格式标注,4070张图片的数据集 数据集分割 4070总图像数 训练组 87% 3551图片 有效集 9% 362图片 测试集 4% 157图片 预处理 自动定向…...
基于Java的小程序电商商城开源设计源码
近年来电商模式的发展越来越成熟,基于 Java 开发的小程序电商商城开源源码,为众多开发者和企业提供了构建个性化电商平台的有力工具。 基于Java的电子商城购物平台小程序的设计在手机上运行,可以实现管理员;首页、个人中心、用户…...
node.js基础学习-fs模块-文件操作(六)
一、前言 fs模块是 Node.js 内置的文件系统(File System)模块,它提供了一系列用于与文件系统进行交互的方法。通过fs模块,可以对文件或目录进行读取、写入、删除、重命名、查询状态等操作,这使得 Node.js 能够很好地处…...
设计模式:11、迭代器模式(游标)
目录 0、定义 1、迭代器模式的四种角色 2、迭代器模式的UML类图 3、示例代码 4、迭代器的next()方法与集合的get(int index)方法的效率对比(LinkedList为例) 0、定义 提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象…...
Oracle SCN与时间戳的映射关系
目录 一、基本概述 二、相关操作 三、参考文档 一、基本概述 Oracle 数据库中的 SYS.SMON_SCN_TIME 表是一个关键的内部表,主要用于记录过去时间段中SCN与具体的时间戳之间的映射关系。这种映射关系可以帮助用户将 SCN 值转换为可读性更强的时间戳,从而…...
【广告投放系统】头条可视化投放平台vue3+element-plus+vite落地历程和心得体会
前言 hallo,又是许久未见,昨天也是正式把公司内部的广告投放平台暂时落地,我也即将离开待了两年多的地方。言归正传,由于头条广告后台的升级改版,因此为了满足内部投放需求,做了一个可视化的投放平台&…...
Gazebo插件相机传感器(可订阅/camera/image_raw话题)
在仿真环境中使用相机传感器,通常需要结合Gazebo插件来实现。Gazebo是一个功能强大的机器人仿真工具,支持多种传感器模型,包括相机。下面是如何在Gazebo中使用相机传感器的详细步骤。 1. 修改Xacro文件以包含Gazebo插件 首先,修…...
华三(HCL)和华为(eNSP)模拟器共存安装手册
接上章叙述,解决同一台PC上同时部署华三(HCL)和华为(eNSP)模拟器。原因就是华三HCL 的老版本如v2及以下使用VirtualBox v5版本,可以直接和eNSP兼容Oracle VirtualBox,而其他版本均使用Oracle VirtualBox v6以上的版本,…...
信息学奥赛一本通 1448:【例题1】电路维修 | 洛谷 P4667 [BalticOI 2011 Day1] Switch the Lamp On 电路维修
【题目链接】 ybt 1448:【例题1】电路维修 洛谷 P4667 [BalticOI 2011 Day1] Switch the Lamp On 电路维修 【题目考点】 1. 双端队列广搜(0-1BFS) 【解题思路】 整个电路是由一个个的正方形的电路元件组成,每个正方形有四个…...
k8s删除网络组件错误
k8s集群删除calico网络组件重新部署flannel网络组件,再部署pod后出现报错不能分配ip地址 plugin type"calico" failed (add): error getting ClusterInformation: connection is unauthorized: Unauthorized 出现该问题是因为删除网络组件后,网…...
MySQL之JDBC
我们在学习完了数据库的基本操作后,希望和我们的Java程序建立连接,那么我们今天就来一探究竟JDBC是如何让Java程序与数据库建立连接的 1. 什么是JDBC JDBC(Java Data Base Connectivity, Java数据库连接) 是Java程序和数据库之间…...
音视频入门基础:MPEG2-TS专题(10)——PAT简介
一、引言 当某个transport packet的TS Header中的PID属性的值为0x0000时,该transport packet的payload为Program association table ,即 PAT表。PAT表包含所有PMT表的目录列表,将program_number和PMT表的PID相关联,获取数据的起始…...
ElementUI:el-drawer实现在父组件区域内打开抽屉组件非全屏
我们在开发ElementUI的时候遇到抽屉组件全屏的问题,但是我们需要在指定div中展示出来,上代码: 1、在el-drawer中增加属性 el-drawerstyle"position: absolute"z-index"-1":append-to-body"false">// do s…...
Vue教程|搭建vue项目|Vue-CLI2.x 模板脚手架
一、项目构建环境准备 在构建Vue项目之前,需要搭建Node环境以及Vue-CLI脚手架,由于本篇文章为上一篇文章的补充,也是为了给大家分享更为完整的搭建vue项目方式,所以环境准备部分采用Vue教程|搭建vue项目|V…...
云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
iview框架主题色的应用
1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题,无需引入,直接可…...
Xela矩阵三轴触觉传感器的工作原理解析与应用场景
Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知,帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量,能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度,还为机器人、医疗设备和制造业的智…...
