我的视频相机应用程序可以在横屏模式下录制视频,但前置摄像头预览的图像是普通的,实际录制的视频会通过轴镜像(翻转或倒置)。
正常后置摄像头一切运作良好。
有没有人能建议我避免这种情况?任何建议或源代码都将对我有所帮助。谢谢。
坏消息:这种镜像是硬编码在相机服务中的,无法禁用。
好消息:如果您使用的是较新的API(API级别>= 14),则可以轻松使用TextureView将预览图像镜像回原始图像。请参阅Android文档中的TextureView示例,然后使用setTransform设置一个镜像变换。这将使预览图像恢复到非镜像的原始状态。
请注意,镜像变换与X轴上-1比例的缩放变换相同。
如果您使用的是旧API版本,则可能可以使用SurfaceView完成相同的操作(使用setScaleX,API级别>= 11)。
setScaleX(-1)
在 API 21 中会导致黑色的 SurfaceView
。 - TWiStErRobImageCapture.Metadata metadata = new ImageCapture.Metadata();
metadata.setReversedHorizontal(true); // This method will fix mirror issue
options = new ImageCapture.OutputFileOptions.Builder(imageOutFile).setMetadata(metadata).build();
在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);