鱼眼镜头畸变矫正与分离显示

  • Android

更新时间不可用

了解在线音乐课堂在不同平台上的鱼眼镜头畸变矫正与分离显示方式,包括接入流程、关键配置和平台差异。

在乐器陪练场景中,学生端可能会配置鱼眼镜头,用于让教师看到学生的弹奏动作,但是鱼眼镜头拍摄的画面存在失真。本文介绍如何使用声网提供的 API 对鱼眼镜头的画面进行畸变矫正和分离显示处理,以帮助教师在教学过程中更好地演示和纠正学生的弹奏动作。

前提条件

开始前请确保你的项目满足如下条件: 你已经集成了声网 RTC 教育特殊版 SDK 并实现了基本的音视频功能。详见快速开始。

实现方法

鱼眼镜头画面畸变矫正

你可以通过以下步骤进行鱼眼镜头画面畸变校正。声网建议在学生端进行鱼眼镜头画面矫正操作。

注意

由于鱼眼镜头画面畸变矫正参数较为复杂且与具体镜头型号有关,声网建议你提交工单联系技术支持协助调参。

  1. 根据镜头的实际情况,设置鱼眼镜头画面矫正参数。

    Java
    // 鱼眼镜头画面矫正参数。
    FishCorrectionParams config = new FishCorrectionParams();
    
    // xCenter 和 yCenter 代表鱼眼图像处理的中心位置。取值范围 [0.4, 0.6]。
    config.xCenter = 0.5;
    config.yCenter = 0.5;
    
    // 鱼眼镜头成像的区域大小。取值范围 [1, 5]。
    config.scaleFactor = 2;
    // 镜头焦距。取值范围 [20, 40]。
    config.focalLength = 28;
    // 标定鱼眼镜头的参数,通过镜头焦距计算。取值范围 [20, 40]。
    config.polFocalLength = 31;
    // 鱼眼矫正效果切分高度。取值范围 [0, 1]。在切分线以上的画面有鱼眼矫正效果,在切分线以下的画面无鱼眼矫正效果。
    config.splitHeight = 0.469;
    // 镜头的一组参数,通过多项式拟合得到。不同类型的鱼眼镜头会有不同的值。
    config.ss[0] = 0.8327;
    config.ss[1] = 0.0;
    config.ss[2] = -0.5536;
    config.ss[3] = 0.4999;
    config.ss[4] = -0.5590;
  2. 调用 enableFishCorrection 开启鱼眼镜头画面矫正。

    Java
    mRtcEngine.enableFishCorrection(true, config);

画面分离显示

你可以通过以下步骤进行画面分离。声网建议在教师端进行画面分离操作,分离后的画面再传回学生端。

  1. 在调用 setupRemoteVideo、setupLocalVideo、setLocalVideoMirrorMode、setRemoteRenderMode、setLocalRenderMode 之前,调用 enableVideoMultiRenderer 启用多重渲染。

    Java
    mRtcEngine.enableVideoMultiRenderer(true);
  2. 调用 setupLocalVideo 和 setupRemoteVideo 分别增加本地和远端的渲染视图。

    Java
    VideoCanvas canvas = new VideoCanvas();
    // 设置渲染的视频源
    canvas.sourceType = VIDEO_SOURCE_CAMERA_PRIMARY;
    canvas.crop = new VideoCanvas.Crop();
    // 设置裁剪后出现在渲染区域的图像
    canvas.crop.xPoint = 100;
    canvas.crop.yPoint = 100;
    canvas.crop.width = 400;
    canvas.crop.height = 400;
    // 增加本地渲染视图
    mRtcEngine.setupLocalVideo(canvas, VIDEO_VIEW_SETUP_ADD);
    // 增加远端渲染视图
    mRtcEngine.setupRemoteVideo(canvas, VIDEO_VIEW_SETUP_ADD);

API 参考

你可以参考在线音乐教学 API 参考了解更多 API 使用信息。