enj*_*les 6 core-image ios swift cvpixelbuffer swift3
我正在尝试将 CVPixelBuffer 大小调整为 128x128。我正在使用 750x750 的分辨率。我目前正在使用 CVPixelBuffer 创建一个新的 CGImage,调整大小然后转换回 CVPixelBuffer。这是我的代码:
func getImageFromSampleBuffer (buffer:CMSampleBuffer) -> UIImage? {
if let pixelBuffer = CMSampleBufferGetImageBuffer(buffer) {
let ciImage = CIImage(cvPixelBuffer: pixelBuffer)
let context = CIContext()
let imageRect = CGRect(x: 0, y: 0, width: 128, height: 128)
if let image = context.createCGImage(ciImage, from: imageRect) {
let t = CIImage(cgImage: image)
let new = t.applying(transformation)
context.render(new, to: pixelBuffer)
return UIImage(cgImage: image, scale: UIScreen.main.scale, orientation: .right)
}
}
return nil
}
Run Code Online (Sandbox Code Playgroud)
我还尝试缩放 CIImage 然后转换它:
let t = CIImage(cgImage: image)
let transformation = CGAffineTransform(scaleX: 1, y: 2)
let new = t.applying(transformation)
context.render(new, to: pixelBuffer)
Run Code Online (Sandbox Code Playgroud)
但这也不起作用。
任何帮助表示赞赏。谢谢!
尝试这个
func getImageFromSampleBuffer (buffer:CMSampleBuffer) -> UIImage? {
if let pixelBuffer = CMSampleBufferGetImageBuffer(buffer) {
let ciImage = CIImage(cvPixelBuffer: pixelBuffer)
let resizedCIImage = ciImage.applying(CGAffineTransform(scaleX: 128.0 / 750.0, y: 128.0 / 750.0))
let context = CIContext()
if let image = context.createCGImage(resizedCIImage, from: resizedCIImage.extent) {
return UIImage(cgImage: image)
}
}
return nil
}
Run Code Online (Sandbox Code Playgroud)
这里我假设像素缓冲区是方形的并且大小等于 750x750,您可以更改它以适用于所有宽高比和大小
| 归档时间: |
|
| 查看次数: |
9718 次 |
| 最近记录: |