2017-10-12 81 views
0

更新:我最後更新了我的代碼。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

回答

0

error link

錯誤鏈接,我得到了答案! 您只需檢查左側的實體檢查器(實用工具欄),檢查類和模塊是否使用「RenderView」類和GPUImage模塊。