如何防止android从前置摄像头反转图像?

时间:2012-04-30 18:37:24

标签: android video camera recording

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

在普通后置摄像头上一切都很好用。

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

4 个答案:

答案 0 :(得分:10)

坏消息:此镜像已硬编码到相机服务中,无法禁用。

好消息:如果您使用的是最近的API(API级别> = 14),则可以轻松使用TextureView将预览图像镜像回原始图像。在Android文档中取TextureView Example,然后使用setTransform设置镜像转换。这会将预览图像还原为非镜像原件。

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

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

答案 1 :(得分:3)

尝试将变换矩阵应用于TextureView。根据{{​​3}}

适用于API级别> = 14

答案 2 :(得分: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);

答案 3 :(得分:0)

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

ImageCapture.Metadata metadata = new ImageCapture.Metadata();
                metadata.setReversedHorizontal(true); // This method will fix mirror issue
                options = new ImageCapture.OutputFileOptions.Builder(imageOutFile).setMetadata(metadata).build();