ios - 如何更改从 CVPixelBuffer 创建的 CGImage 的像素颜色?
问题描述
我有一个简单的函数,它获取 CVPixelBuffer,将其转换为 CGImage 并分配给屏幕上显示的 CALayer。
func processResults(_ results: [Any]){
if let observation = (results as? [VNPixelBufferObservation])?.first {
var cgImage: CGImage?
VTCreateCGImageFromCVPixelBuffer(observation.pixelBuffer, options: nil, imageOut: &cgImage)
caLayer.contents = cgImage
if caLayer.superlayer == nil {
segmentationOverlay.addSublayer(caLayer)
}
}
}
结果如下:
我如何得到它?
lazy var request: VNCoreMLRequest = {
let model = try! VNCoreMLModel(for: espnetv2_fp16_new().model)
let request = VNCoreMLRequest(model: model) { request, error in
DispatchQueue.main.async {
if let results = request.results {
self.processResults(results)
}
}
}
request.imageCropAndScaleOption = .scaleFill
return request
}()
func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {
if let pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) {
let handler = VNImageRequestHandler(cvPixelBuffer: pixelBuffer, options: [:])
try! handler.perform([request])
}
}
我想让黑色完全透明,灰色的颜色变成绿色的颜色。可能吗?
解决方案
推荐阅读
- java - 引起:org.springframework.data.mapping.PropertyReferenceException:没有找到类型产品的属性聚合
- java - 计算 TCP 校验和值 - TCP 长度和填充
- dialogflow-es - followupEvent 不符合任何意图
- xamarin.forms - Xamarin.forms Device.OpenUri 无法在 Android 中打开 https://xxx.PDF 文件
- asp.net - 有没有办法使用 runas 命令远程连接到 SQL Server(外部域)并尝试调试生产代码(内部域)
- c# - 在新的空数据表上使用“使用”是一种好习惯吗?
- r - 在循环中调用带有索引的数据框
- sitecore - Sitecore 查询获取文件夹下的最新项目
- javascript - Mongodb 多个 $lookup 和 $unwind 在同一聚合管道中
- java - 为什么列出