从前置摄像头 iOS 5.0 拍摄时总是看到镜像

Posted

技术标签:

【中文标题】从前置摄像头 iOS 5.0 拍摄时总是看到镜像【英文标题】:Always seeing Mirror image while capturing from Front Camera iOS 5.0 【发布时间】:2012-02-10 12:03:34 【问题描述】:

从前置摄像头捕获数据时,我总是得到镜像,我怎样才能得到我在预览窗口中看到的内容。我已将videoMirrored 设置为TRUE。以下是sn-p的代码:

AVCaptureConnection *lConnection = nil;

  for ( AVCaptureConnection *connection in [lHandle->m_output connections]) 
     for ( AVCaptureInputPort *port in [connection inputPorts] ) 
         if ( [[port mediaType] isEqual:AVMediaTypeVideo] ) 
             lConnection = connection;
             break;
         
     
 
if ([lConnection isVideoOrientationSupported])
    [lConnection setVideoOrientation:AVCaptureVideoOrientationPortrait];
if ([lConnection isVideoMirroringSupported])
    [lConnection setVideoMirrored:TRUE];

setVideoMirrored 更改为True/False 也不会改变任何内容 (isVideoMirroringSupported 返回成功)

【问题讨论】:

我很确定你的预览窗口应该显示镜像视频(在某种意义上,就像你在照镜子一样,所以你举起你的右臂和右手边的手臂显示上升)- 当您捕获数据时,它是在这个意义上镜像还是与您的预览窗口相比是镜像的(因此,就来自传感器的内容而言,正确的方式)? 谢谢 Tommy。你能告诉我为什么将 SetVideoMirrored 设置为 TRUE/FALSE 不会改变任何事情。 谢谢@Tommy。你能告诉我为什么将 SetVideoMirrored 设置为 TRUE/FALSE 不会改变任何事情吗? @Tommy。是的,我检查了 isVideoMirroringSupported 是否返回 YES,并尝试将 VideoMirrored 设置为 YES/NO。但我没有看到任何变化。 @RajatKothari 你终于找到解决这个问题的方法了吗?我的前置摄像头也有同样的问题。 【参考方案1】:

使用以下代码翻转镜像。

UIImage * flippedImage = [UIImage imageWithCGImage:picture.CGImage scale:picture.scale orientation:UIImageOrientationLeftMirrored];

【讨论】:

如果你是横向拍照,这将不起作用。【参考方案2】:

Swift版本:

let flippedImage = UIImage(CGImage: image.CGImage, scale: image.scale, orientation: .LeftMirrored)

【讨论】:

【参考方案3】:

您可以使用withHorizontallyFlippedOrientation() 翻转 UIImage。

// first get an UIImage from the front camera
let sourceImg = UIImage(cgImage: image, scale: 1.0, orientation: .leftMirrored)
return sourceImg.withHorizontallyFlippedOrientation()

【讨论】:

以上是关于从前置摄像头 iOS 5.0 拍摄时总是看到镜像的主要内容,如果未能解决你的问题,请参考以下文章

iOS 摄像头应用,从前置摄像头切换到后置摄像头时闪烁

iPad - 从前置摄像头拍照并识别驾驶执照

从前置摄像头 Android 录制

为啥共享视频只发送到其他一些应用程序?

使用前置摄像头时需要镜像视频方向和手柄旋转

IOS Swift 3:拍摄相机图片后水平翻转前置摄像头图像