openharmony 鸿蒙 camera-depth-data-sys

2026-08-25 浏览 (1)

深度信息(仅对系统应用开放)(ArkTS)

深度信息表示图像中每个像素点与相机之间的距离关系,可以辅助实现更精准的对焦和背景虚化效果等。在相机应用预览、拍照和录像场景中,支持上报深度信息。

开发步骤

详细的API说明请参考@ohos.multimedia.camera (相机管理)

  1. 导入camera接口,接口中提供了相机相关的属性和方法,导入方法如下。

    import { camera } from '@kit.CameraKit';
    import { BusinessError } from '@kit.BasicServicesKit';
    
  2. 通过CameraOutputCapability中的depthProfiles属性获取当前设备支持的深度能力,返回depthProfilesArray数组。通过createDepthDataOutput方法创建深度流。

    function getDepthDataOutput(cameraManager: camera.CameraManager,
     cameraOutputCapability: camera.CameraOutputCapability): camera.DepthDataOutput|undefined {
       let depthProfilesArray: Array<camera.DepthProfile> = cameraOutputCapability.depthProfiles;
       if (!depthProfilesArray) {
         console.error("createOutput depthProfilesArray is null");
         return undefined;
       }
       let depthDataOutput: camera.DepthDataOutput|undefined = undefined;
       try {
         if (depthProfilesArray.length > 0) {
           depthDataOutput = cameraManager.createDepthDataOutput(depthProfilesArray[0]);
         } else {
           console.error("the length of depthProfilesArray<=0!");
           return undefined;
         }
       } catch (error) {
         let err = error as BusinessError;
         console.error(`Failed to create the DepthDataOutput instance. error: ${err}`);
       }
       return depthDataOutput;
    }
    
  3. 使能。通过depthDataOutput的start方法输出深度流。接口调用失败会返回相应错误码,错误码类型参见CameraErrorCode

    async function startDepthDataOutput(depthDataOutput: camera.DepthDataOutput): Promise<void> {
      if (!depthDataOutput) {
        console.error('depthDataOutput Undefined');
        return;
      }
      try {
        await depthDataOutput.start();
      } catch (err) {
        const error = err as BusinessError;
        console.error(`Failed to start depth data output. error: ${err}`);
      }
    }
    

状态监听

在相机应用开发过程中,可以随时监听深度流的深度数据回调信息,以及深度流输出错误信息。

  • 通过注册固定的depthDataAvailable回调函数获取监听深度流数据。

    function onDepthDataAvailable(depthDataOutput: camera.DepthDataOutput): void {
      depthDataOutput.on('depthDataAvailable', (err: BusinessError) => {
        if (err !== undefined && err.code !== 0) {
          return;
        }
        console.info('Depth data available');
      });
    }
    
  • 通过注册固定的error回调函数获取监听深度流输出错误结果,callback返回深度输出接口使用错误时对应的错误码,错误码类型参见CameraErrorCode

    function onDepthDataOutputError(depthDataOutput: camera.DepthDataOutput): void {
      depthDataOutput.on('error', (depthDataOutputError: BusinessError) => {
        console.error(`Depth data output error code: ${depthDataOutputError.code}`);
      });
    }
    

你可能感兴趣的鸿蒙文章

openharmony 鸿蒙 camera-whitebalance

openharmony 鸿蒙 native-camera-preview

openharmony 鸿蒙 camera-worker

openharmony 鸿蒙 camera-background-recovery

openharmony 鸿蒙 camera-preparation

openharmony 鸿蒙 native-camera-yuv-shooting

openharmony 鸿蒙 camera-shooting

openharmony 鸿蒙 camera-moving-photo

openharmony 鸿蒙 camera-system-pressure

openharmony 鸿蒙 native-camera-preview-imageReceiver

  • 所属分类: 后端技术
  • 本文标签: 鸿蒙 软件
  • 版权声明: 本文链接 https://seaxiang.com/blog/ANtIhGd3