16

我的摄像机应用程序确实在横向模式下录制,但前置摄像头预览常规图像,但实际录制在轴上镜像(翻转或倒置)。

在普通后置摄像头上一切正常。

任何人都可以建议我避免它的方法吗?任何建议或源代码都会有很大帮助。谢谢你。

4

4 回答 4

11

坏消息:这个镜像被硬编码到相机服务中,并且不能被禁用。

好消息:如果您使用的是最近的 API(API 级别 >= 14),您可以轻松使用 TextureView 将预览图像镜像回原始图像。查看 Android 文档中的TextureView 示例,然后使用setTransform设置镜像变换。这会将预览图像恢复为未镜像的原始图像。

请注意,镜像变换与在 X 轴上具有 -1 比例的缩放变换相同。

如果您使用的是较旧的 API 版本,则可以对 SurfaceView 执行相同操作(使用setScaleX,API 级别 >= 11)。

于 2012-04-30T20:51:04.547 回答
4

尝试将转换矩阵应用于 TextureView。根据防止前置摄像头翻转

这适用于 API 级别 >= 14

于 2013-07-10T11:56:52.937 回答
2

如果您使用此代码,您可以将相机图片镜像更改为精确预览

ImageCapture.Metadata metadata = new ImageCapture.Metadata();
                metadata.setReversedHorizontal(true); // This method will fix mirror issue
                options = new ImageCapture.OutputFileOptions.Builder(imageOutFile).setMetadata(metadata).build();
于 2021-01-31T09:34:24.510 回答
0

在 OpenCV JavaCameraView 中;

public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) {
    imageMat = inputFrame.rgba().t();
    if (//horizontal reverse)
        Core.flip(imageMat, imageMat, 1);
    else //for vertical reverse
        Core.flip(imageMat, imageMat, -1);
于 2020-12-18T11:31:08.363 回答