我的视频相机应用程序确实以横向模式录制,但前置摄像头预览常规图像,但实际录制在轴上进行镜像(翻转或反转)。
在普通后置摄像头上一切都很好用。
有人可以建议我避免它吗?任何建议或源代码都会有很大帮助。谢谢。
答案 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();