EXC_BAD_ACCESS在GPUImage2中尝试使用shiTomasiFeatureDetector过滤器

问题描述:

更新:我最后更新了我的代码。EXC_BAD_ACCESS在GPUImage2中尝试使用shiTomasiFeatureDetector过滤器

好像我有与this site相同的问题,但在不同的情况下。所以我试图在viewController.swift中使用GPUImage2框架中的shiTomasiFeatureDetector过滤器,并且我得到了代码= 1/code = 2的EXC_BAD_ACCESS行camera --> blendFilter --> renderView。这里是我的代码:

import UIKit 
import CoreImage 
import GPUImage 
import AVFoundation 
import QuartzCore 

class ViewController: UIViewController { 

    @IBOutlet var filterView: RenderView? 
    var videoCamera: Camera?  

    required init(coder aDecoder: NSCoder) { 
     do { 
      videoCamera = try Camera(sessionPreset: AVCaptureSessionPreset640x480, location: .backFacing) 
      videoCamera!.runBenchmark = true 
     } catch { 
      videoCamera = nil 
      print("Couldn't initialize camera with error: \(error)") 
     } 
     super.init(coder: aDecoder)! 
    } 

    // declare filters and crosshairs 
    var shiTomasiFilter = ShiTomasiFeatureDetector() 
    lazy var crosshairGenerator: CrosshairGenerator = { 
     let generator = CrosshairGenerator(size:Size(width:480, height:640)) 
     generator.crosshairWidth = 15.0 
     return generator 
    }() 
    let blendFilter = AlphaBlend() 


    override func viewDidLoad() { 
     super.viewDidLoad() 

     // re-declare camera using guard-statement 
     guard let videoCamera = videoCamera else { 
      let errorAlertController = UIAlertController(title: NSLocalizedString("Error", comment: "Error"), message: "Couldn't initialize camera", preferredStyle: .alert) 
      errorAlertController.addAction(UIAlertAction(title: NSLocalizedString("OK", comment: "OK"), style: .default, handler: nil)) 
      self.present(errorAlertController, animated: true, completion: nil) 
      return 
     } 

     if let view = self.filterView { 
      // gettin' corners 
      shiTomasiFilter.cornersDetectedCallback = { 
       corners in self.crosshairGenerator.renderCrosshairs(corners) 
      } 
      shiTomasiFilter.threshold = 0.1 

      videoCamera --> shiTomasiFilter 
      crosshairGenerator --> blendFilter 

      videoCamera --> blendFilter --> view 

      videoCamera.startCapture() 
     } 

    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


} 

我可以有任何建议发生了什么?

错误链接:在Pipeline.swift

error link

错误链接,我得到了答案! 您只需检查左侧的实体检查器(实用工具栏),检查类和模块是否使用“RenderView”类和GPUImage模块。