MTK平台camera相关几项CTS/ITS/CTS-VERIFIER问题的解决思路

本文详细记录了解决CTS和ITS测试中出现的fail问题的过程,包括调整帧率设置、解决曝光相关测试项以及修正CameraFormats测试项的问题。

CTS fail项

  1. 观察fail结果,都是帧率相关的测试项,比如:
    testCameraToSurfaceTextureMetadata
    testPreviewFpsRange
    再查看result/log,发现fail都出现在测试前摄时。
  2. 打开系统相机,查看前摄的帧率在室内光/打灯条件下是不是正常,能不能达到30fps。结果:前摄帧率最大只跑到了15fps,这显然是一个异常状态
  3. 强制固定帧率为30fps(这一步有很多丧心病狂的方法,改代码/设置属性),查看实时log依然只有15fps。
  4. 直接看内核驱动代码的log,实际设置的shutter/framelength的值是多少,这里有两个个计算公式:
    (1)实时帧率 = pclk/linelength/framelength;pclk与linelength来自于驱动中配置的imgsensor info。
    (2)framelength = ((shutter + margin)< min_framelength)?(min_framelength):(shutter + margin);shutter来自效果参数的一系列计算,margin来自驱动代码的配置,min_framelength即为imgsensor info中设置的framelength。
    然而从实际打印的内核Log看,shutter与framelength的值违反了第二个公式,shutter值在2000左右波动,framelength一直固定在4164.
    从对应的imgsensor info中查找到pclk与linelength的值计算实时帧率,结果大概在15帧,同时发现imgsensor info里面设置的framelength = 4164,但最大帧率写的是30fps。
  5. 此处framelength显然是一个异常值,那么应该修改成什么值呢?
    从write_shutter中可以看到framelength的值最终被写入寄存器0x0006中,查找对应setting(cap)中0x0006写入的值:0x0822,转换成十进制就是2082。所以将imgsensor info中的framelength修改成2082验证。
  6. 修改后系统相机室内亮光环境下可以达到30帧,复测cts fail项,都可以pass。
  7. 找FAE double check后提交修改。

ITS fail项

  1. 查看fail项,基本都是曝光相关的测试项,如:
    test_exposure
    test_latching……
  2. test_latching是其中比较典型的一个测试项,查看测试脚本可以看出,此测试项内容是:
    (1)获取IC支持的sensitivity和exposuretime
    (2)然后设置预设的一系列值来获取图片:
            its.objects.manual_capture_request(s,  e,   0.0, True, props),
            its.objects.manual_capture_request(s,  e,   0.0
07-17 23:56:11.750 ERROR Exception occurred in test_preview_aspect_ratio_and_crop. Traceback (most recent call last): File "/home/wingtech/miniforge3/envs/itsV/lib/python3.9/site-packages/mobly/base_test.py", line 783, in exec_one_test test_method() File "/home/wingtech/ITS/15_r4/wff/wff0628/android-cts-verifier-15_r4-linux_x86-arm/android-cts-verifier/CameraITS/tests/scene4/test_preview_aspect_ratio_and_crop.py", line 240, in test_preview_aspect_ratio_and_crop video_processing_utils.extract_last_key_frame_from_recording( File "/home/wingtech/ITS/15_r4/wff/wff0628/android-cts-verifier-15_r4-linux_x86-arm/android-cts-verifier/CameraITS/utils/video_processing_utils.py", line 325, in extract_last_key_frame_from_recording key_frame_files = extract_key_frames_from_video(log_path, file_name) File "/home/wingtech/ITS/15_r4/wff/wff0628/android-cts-verifier-15_r4-linux_x86-arm/android-cts-verifier/CameraITS/utils/video_processing_utils.py", line 240, in extract_key_frames_from_video raise AssertionError('No key frames extracted. Check source video.') AssertionError: No key frames extracted. Check source video. 07-17 23:56:11.751 DEBUG [test_preview_aspect_ratio_and_crop]#teardown_test >>> BEGIN >>> 07-17 23:56:11.751 DEBUG [test_preview_aspect_ratio_and_crop]#teardown_test <<< END <<< 07-17 23:56:11.751 DEBUG [test_preview_aspect_ratio_and_crop]#on_fail >>> BEGIN >>> 07-17 23:56:11.751 DEBUG test_preview_aspect_ratio_and_crop on FAIL. 07-17 23:56:11.751 DEBUG [test_preview_aspect_ratio_and_crop]#on_fail <<< END <<< 07-17 23:56:11.751 INFO [Test] test_preview_aspect_ratio_and_crop FAIL 错误的原因是什么
07-20
Android CTS 测试中,若在运行 CameraITS 测试时出现 `ModuleNotFoundError: No module named 'cv2'` 错误,表明测试所需的 Python OpenCV 模块未正确安装或未被系统识别。该错误通常出现在测试脚本依赖于 OpenCV 的图像处理功能(如 `opencv_processing_utils.py`)时,而环境中缺少必要的 `cv2` 模块支持。 为了解决问题,需确保系统中已安装 Python 版本的 OpenCV 库,并且安装方式应兼容当前使用的操作系统和 Python 环境。可通过以下命令进行安装: ```bash pip install opencv-python ``` 如果测试需要使用 ArUco 等扩展模块,则应安装包含额外功能的 `opencv-contrib-python` 包[^1]: ```bash pip install opencv-contrib-python ``` 在某些情况下,系统可能因存在多个 Python 环境而导致 `cv2` 模块无法被正确加载。此时应确认当前运行测试所使用的 Python 解释器路径与安装 `cv2` 模块的环境一致。可以通过以下命令检查当前环境中是否已成功安装 OpenCV 并可导入: ```python import cv2 print(cv2.__version__) ``` 若安装后仍无法导入 `cv2`,可能是由于动态链接库缺失或路径配置不正确导致的异常。例如,在 Java 调用 OpenCV 本地库时可能出现类似 `no opencv_java430 in java.library.path` 的错误[^3],而在 Python 中则表现为模块无法加载。这种情况下应检查 Python 是否能访问到正确的二进制库路径,必要时可创建隔离的虚拟环境以避免冲突。 此外,对于 Android CTS 测试环境,还应确保测试设备或模拟器中部署了支持 OpenCV 的 Python 运行时环境。部分自动化测试框架可能需要手动将 Python 和相关模块打包并部署至设备上运行。 ### 验证 OpenCV 安装状态 可通过以下代码片段验证当前 Python 环境是否支持 `cv2` 模块及其 ArUco 功能: ```python import cv2 # 检查 cv2 是否可用 try: import cv2 print("OpenCV 版本:", cv2.__version__) # 检查 aruco 模块是否存在 if hasattr(cv2, 'aruco'): print("ArUco 模块已成功加载") else: print("警告:未找到 ArUco 模块,请考虑安装 opencv-contrib-python") except ImportError: print("错误:cv2 模块未安装,请先执行 pip install opencv-python 或 opencv-contrib-python") ``` ### 安装建议总结 - 若仅需基础图像处理功能,使用 `opencv-python` 即可。 - 若涉及 ArUco 标记检测、SIFT/SURF 特征提取等高级功能,必须使用 `opencv-contrib-python`。 - 确保安装版本与 Python 解释器版本兼容(Python 3.6+ 推荐)。 - 在 Linux 系统中,有时需安装额外的依赖库(如 libgl1、libsm6 等)以支持 GUI 相关功能。 - 对于 Android 设备上的测试,应使用适用于移动平台的 Python 发行版(如 Pydroid3 或 Termux),并确保其具备完整的 OpenCV 支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值