2017-04-10 2 views
1

AVCaptureSessionの各フレームを処理し、フィルタリングされた画像をUIImageViewでプレビューしようとしています。それは動作しますが、UIImageViewの画像は回転して見えます(歪んだ)。私はこことGoogleで答えを見つけようとしていましたが、実際の解決策を見つけることができませんでした...誰に何を試してみるか考えていますか?captureOutputのオリエンテーションの問題:didOutputSampleBuffer:from接続:

ところで、私はスウィフト3.0に

を使用しています。これは、私が使用していたコードです:

func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, from connection: AVCaptureConnection!) { 

    let pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) 
    let attachments = CMCopyDictionaryOfAttachments(kCFAllocatorMalloc, sampleBuffer!, kCMAttachmentMode_ShouldPropagate) 
    let coreImage = CIImage(cvImageBuffer: pixelBuffer!, options: attachments as! [String : Any]?) 
    var filteredImage = UIImage(ciImage: coreImage, scale: 1.0, orientation: UIImageOrientation.right) 

    if filter { 
     NSLog("FILTER ACTIVATED") 
     let filterType = CIFilter(name: "CISepiaTone") 
     filterType?.setValue(coreImage, forKey: kCIInputImageKey) 
     filterType?.setValue(0.5, forKey: kCIInputIntensityKey) 
     filteredImage = UIImage(ciImage: filterType!.value(forKey: kCIOutputImageKey) as! CIImage!, scale: filteredImage.scale, orientation: UIImageOrientation.right) 
    } 

    DispatchQueue.main.async() { 
     self.imageViewPreview.image = filteredImage // UIImageView 
    } 
} 

そして、これは私がプレビューで見たものである。

UIImageView preview

多く事前に感謝

+0

イメージの向きを確認してください。「UIImageOrientation.right」は、元の向きでは「UIImageOrientation.up」ではありません。 –

+0

ありがとうこの。私はそれを試しましたが、結果は同じです... –

答えて

0

私はそれを見つけました!それは、そのメソッドにconnection.videoOrientation = AVCaptureVideoOrientation.portraitという行を追加しなければならないことが判明しました。