具有叠加动画静态的 GPUImage 灰度实时摄像机提要
GPUImage Greyscale live camera feed with overlaid animated static
我正在尝试将实时摄像头画面显示为灰度,并覆盖动画静态。
我有灰度工作,这很容易,但我很难弄清楚如何叠加图像(更不用说动画了)。
任何 help/letting 我知道让叠加层动画是不可行的,不胜感激?
谢谢
灰度代码:
private var videoCamera: GPUImageVideoCamera?
private var videoView: GPUImageView?
private var greyscaleFilter: GPUImageGrayscaleFilter?
videoCamera = GPUImageVideoCamera(sessionPreset: AVCaptureSessionPreset352x288, cameraPosition: .Back)
videoView = GPUImageView(frame: CGRect(x: 0, y: 0, width: 352, height: 288))
view.addSubview(videoView!)
greyscaleFilter = GPUImageGrayscaleFilter()
greyscaleFilter?.addTarget(videoView)
videoCamera?.addTarget(greyscaleFilter);
videoCamera?.startCameraCapture()
编辑:这是我目前所在的位置,我正在使用 GPUImage 提供的示例,但看不出为什么它还不能工作。 (overlay.jpg 是我用来测试的图像,认为混合会更明显,而不是我真正需要的微妙静态)。此代码仅产生灰度视频,混合过滤器似乎根本没有做任何事情。
videoCamera = GPUImageVideoCamera(sessionPreset: AVCaptureSessionPreset352x288, cameraPosition: .Back)
videoView = GPUImageView(frame: CGRect(x: 0, y: 0, width: 352, height: 288))
view.addSubview(videoView!)
greyscaleFilter = GPUImageGrayscaleFilter()
videoCamera?.addTarget(greyscaleFilter)
greyscaleFilter?.addTarget(videoView)
blendFilter = GPUImageOverlayBlendFilter()
videoCamera?.addTarget(blendFilter)
inputImage = ImageCache.loadImage(named: "overlay.jpg")
blendImage? = GPUImagePicture(image: inputImage)
blendImage?.addTarget(blendFilter)
blendImage?.processImage()
blendFilter?.addTarget(videoView)
videoCamera?.startCameraCapture()
终于回到这里,我开始工作了,但不确定为什么以前没有,但是;我将一些类型更改为非可选类型,因此必须在我的 ViewController 的 init(coder aDecoder: NSCoder) 方法中初始化它们,之后效果很好。
更新了下面的代码。
var videoCamera: GPUImageVideoCamera
var videoView: GPUImageView
var greyscaleFilter: GPUImageGrayscaleFilter
var blendFilter: GPUImageOverlayBlendFilter
var blendImage: GPUImagePicture?
var inputImage: UIImage?
required init(coder aDecoder: NSCoder) {
videoCamera = GPUImageVideoCamera(sessionPreset: AVCaptureSessionPreset640x480, cameraPosition: .Back)
videoView = GPUImageView(frame: CGRect(x: 0, y: 0, width: 640, height: 480))
blendFilter = GPUImageOverlayBlendFilter()
greyscaleFilter = GPUImageGrayscaleFilter()
super.init(coder: aDecoder)
}
override func viewDidLoad() {
view.addSubview(videoView)
videoCamera.addTarget(greyscaleFilter)
greyscaleFilter.addTarget(blendFilter)
let inputImage = ImageCache.loadImage(named: "overlay.jpg")
self.blendImage = GPUImagePicture(image: inputImage)
self.blendImage?.addTarget(blendFilter)
self.blendImage?.processImage()
blendFilter.addTarget(videoView)
videoCamera.startCameraCapture()
super.viewDidLoad()
}
我正在尝试将实时摄像头画面显示为灰度,并覆盖动画静态。
我有灰度工作,这很容易,但我很难弄清楚如何叠加图像(更不用说动画了)。
任何 help/letting 我知道让叠加层动画是不可行的,不胜感激? 谢谢
灰度代码:
private var videoCamera: GPUImageVideoCamera?
private var videoView: GPUImageView?
private var greyscaleFilter: GPUImageGrayscaleFilter?
videoCamera = GPUImageVideoCamera(sessionPreset: AVCaptureSessionPreset352x288, cameraPosition: .Back)
videoView = GPUImageView(frame: CGRect(x: 0, y: 0, width: 352, height: 288))
view.addSubview(videoView!)
greyscaleFilter = GPUImageGrayscaleFilter()
greyscaleFilter?.addTarget(videoView)
videoCamera?.addTarget(greyscaleFilter);
videoCamera?.startCameraCapture()
编辑:这是我目前所在的位置,我正在使用 GPUImage 提供的示例,但看不出为什么它还不能工作。 (overlay.jpg 是我用来测试的图像,认为混合会更明显,而不是我真正需要的微妙静态)。此代码仅产生灰度视频,混合过滤器似乎根本没有做任何事情。
videoCamera = GPUImageVideoCamera(sessionPreset: AVCaptureSessionPreset352x288, cameraPosition: .Back)
videoView = GPUImageView(frame: CGRect(x: 0, y: 0, width: 352, height: 288))
view.addSubview(videoView!)
greyscaleFilter = GPUImageGrayscaleFilter()
videoCamera?.addTarget(greyscaleFilter)
greyscaleFilter?.addTarget(videoView)
blendFilter = GPUImageOverlayBlendFilter()
videoCamera?.addTarget(blendFilter)
inputImage = ImageCache.loadImage(named: "overlay.jpg")
blendImage? = GPUImagePicture(image: inputImage)
blendImage?.addTarget(blendFilter)
blendImage?.processImage()
blendFilter?.addTarget(videoView)
videoCamera?.startCameraCapture()
终于回到这里,我开始工作了,但不确定为什么以前没有,但是;我将一些类型更改为非可选类型,因此必须在我的 ViewController 的 init(coder aDecoder: NSCoder) 方法中初始化它们,之后效果很好。
更新了下面的代码。
var videoCamera: GPUImageVideoCamera
var videoView: GPUImageView
var greyscaleFilter: GPUImageGrayscaleFilter
var blendFilter: GPUImageOverlayBlendFilter
var blendImage: GPUImagePicture?
var inputImage: UIImage?
required init(coder aDecoder: NSCoder) {
videoCamera = GPUImageVideoCamera(sessionPreset: AVCaptureSessionPreset640x480, cameraPosition: .Back)
videoView = GPUImageView(frame: CGRect(x: 0, y: 0, width: 640, height: 480))
blendFilter = GPUImageOverlayBlendFilter()
greyscaleFilter = GPUImageGrayscaleFilter()
super.init(coder: aDecoder)
}
override func viewDidLoad() {
view.addSubview(videoView)
videoCamera.addTarget(greyscaleFilter)
greyscaleFilter.addTarget(blendFilter)
let inputImage = ImageCache.loadImage(named: "overlay.jpg")
self.blendImage = GPUImagePicture(image: inputImage)
self.blendImage?.addTarget(blendFilter)
self.blendImage?.processImage()
blendFilter.addTarget(videoView)
videoCamera.startCameraCapture()
super.viewDidLoad()
}