2016-01-20 113 views
0

我一直試圖將GPUImageHoughTransformLineDetector應用於Swift中的UIImage,但它沒有給我任何幫助,並且現在幾個小時,我無法弄清楚我做錯了什麼。GPUImage篩選器返回零

繼承人我的代碼:

func lineDetection(image: UIImage)-> UIImage { 

    let stillImage = GPUImagePicture(image: image) 

    let filter = GPUImageHoughTransformLineDetector() 

    let lineGenerator = GPUImageLineGenerator() 

    lineGenerator.forceProcessingAtSize(image.size) 
    lineGenerator.setLineColorRed(1.0,green: 0.0, blue: 0.0) 

filter.linesDetectedBlock = { (lineArray:UnsafeMutablePointer<GLfloat>, linesDetected:UInt, frameTime:CMTime) in 
      lineGenerator.renderLinesFromArray(lineArray, count:linesDetected, frameTime:frameTime) 

     } 

     stillImage.addTarget(filter) 

    let blendFilter = GPUImageAlphaBlendFilter() 
    blendFilter.forceProcessingAtSize(image.size) 
    let gammaFilter = GPUImageGammaFilter() 
    stillImage.addTarget(gammaFilter) 
    gammaFilter.addTarget(blendFilter) 

    lineGenerator.addTarget(blendFilter) 

    blendFilter.useNextFrameForImageCapture() 

    stillImage.processImage() 

    return filter.imageFromCurrentFramebuffer() // returns always nil << 


    } 

必須在「是車轍」現在簡單的東西,我很想念,但我只是很。感謝您的理解。

更新:

果然很簡單,看到我的回答

常識不是那麼常見,當你跟隨另一位導遊。

我會留下這個問題,因爲它可能會幫助某人在未來在Swift中實現過濾器。

回答

1

更改:

filter.imageFromCurrentFramebuffer() 

到:

blendFilter.imageFromCurrentFramebuffer() 

做到了。