0
我在GPUImage中使用Swift 3。我有一個名爲:lut_lookup.png
的LUT圖像文件我已經成功地將它用於靜態圖像上的GPUImage,並且它使用LUT濾鏡應用並顯示結果。GPUImageVideoCamera實時預覽使用GPUImage的自定義LUT
我現在試圖將相同的LUT過濾器應用於實時相機視圖,但我似乎無法使其工作。它基本上不顯示相機。
我在下面提供了我的代碼,任何幫助將不勝感激。這可能很簡單,我錯過了/做錯了,但我似乎無法發現它。
import UIKit
import GPUImage
class LiveCameraVC: UIViewController
{
// MARK: - Variables
let videoCamera: GPUImageVideoCamera? = {
if let videoCamera = GPUImageVideoCamera(sessionPreset: AVCaptureSessionPreset640x480, cameraPosition: .back) {
videoCamera.outputImageOrientation = .portrait
videoCamera.horizontallyMirrorFrontFacingCamera = false
videoCamera.horizontallyMirrorRearFacingCamera = false
return videoCamera
} else {
print("GPUImageVideoCamera Nil")
return nil
}
}()
let filter: GPUImageLookupFilter = {
let filter = GPUImageLookupFilter()
filter.intensity = 1.0
return filter
}()
// MARK: - UI
let modifiedImageView: GPUImageView = {
let imageView = GPUImageView.newAutoLayout()
imageView.fillMode = kGPUImageFillModePreserveAspectRatioAndFill;
imageView.isUserInteractionEnabled = true
return imageView
}()
// MARK: - Life Cycle
override func viewDidLoad() {
super.viewDidLoad()
let tapGesture:UITapGestureRecognizer = UITapGestureRecognizer().bk_init { [unowned self] (sender:UIGestureRecognizer?, state:UIGestureRecognizerState, location:CGPoint) in
print("Tapped")
self.performLut()
} as! UITapGestureRecognizer
modifiedImageView.addGestureRecognizer(tapGesture)
}
override func loadView() {
super.loadView()
self.view.addSubview(modifiedImageView)
modifiedImageView.autoPinEdgesToSuperviewEdges()
}
// MARK: - Private
private func performLut() {
print("performLut")
if let videoCamera = videoCamera {
if let lookupImageSource = GPUImagePicture(image: UIImage(named:"lut_lookup")) {
videoCamera.addTarget(filter, atTextureLocation: 0)
lookupImageSource.addTarget(filter, atTextureLocation: 1)
filter.addTarget(modifiedImageView)
videoCamera.startCapture()
} else {
print("videoCamera Nil")
}
} else {
print("GPUImageVideoCamera Nil")
}
}
}
感謝