Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何更改从CVPixelBuffer创建的CGImage的像素颜色?_Ios_Swift - Fatal编程技术网

Ios 如何更改从CVPixelBuffer创建的CGImage的像素颜色?

Ios 如何更改从CVPixelBuffer创建的CGImage的像素颜色?,ios,swift,Ios,Swift,我有一个简单的函数,可以获取CVPixelBuffer,将其转换为CGImage并分配给屏幕上显示的CALayer func processResults(_ results: [Any]){ if let observation = (results as? [VNPixelBufferObservation])?.first { var cgImage: CGImage? VTCreateCGImageFromCVPixelBuffer(observa

我有一个简单的函数,可以获取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])
    }
}

我想让黑色完全透明,灰色变成绿色。有可能吗?

您的视频捕获在没有视觉后处理的情况下工作吗?没有,我想。。。它不…嗯,我做了类似的事情,它有很多代码。您的captureOutput函数应该配置为在AVFoundation的CALayer上呈现内容。只有这样,您才应该添加一些func,它使用视觉进行某些对象检测。只有这样,您才能添加过滤后的结果,以接收带有绿色像素的半透明图像。您可以将解决方案发布在此处或通过电子邮件发布吗?不幸的是,很难看到代码片段中的哪个阶段被破坏。尝试提取问题以获得更好的结果。您的视频捕获在没有视觉后处理的情况下工作吗?不,我认为。。。它不…嗯,我做了类似的事情,它有很多代码。您的captureOutput函数应该配置为在AVFoundation的CALayer上呈现内容。只有这样,您才应该添加一些func,它使用视觉进行某些对象检测。只有这样,您才能添加过滤后的结果,以接收带有绿色像素的半透明图像。您可以将解决方案发布在此处或通过电子邮件发布吗?不幸的是,很难看到代码片段中的哪个阶段被破坏。尝试提取问题以获得更好的结果。