Poc*_*chi 5 ios swift swift3 apple-vision
我正在使用以下代码创建我的请求:
let textRequest = VNDetectTextRectanglesRequest(completionHandler:
self.detectTextHandler)
textRequest.reportCharacterBoxes = true
self.requests = [textRequest]
Run Code Online (Sandbox Code Playgroud)
在我的AVCaptureVideoDataOutputSampleBufferDelegate 中,我正在创建一个 VNImageRequestHandler 并执行它:
let imageRequestHandler = VNImageRequestHandler(cvPixelBuffer: pixelBuffer, orientation: CGImagePropertyOrientation(rawValue: 6)!, options: requestOptions)
do {
try imageRequestHandler.perform(self.requests)
} catch {
print(error)
}
Run Code Online (Sandbox Code Playgroud)
这为我提供了具有以下签名的处理程序内部的检测结果:
func detectTextHandler(request: VNRequest, error: Error?)
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何获得此请求用于进一步处理的“cvPixelBuffer”?我应该存储它的临时版本吗?
我找不到任何可以CVPixelBuffer从VNRequest.
因此,在 的 闭包中捕获它completionHandler是一种简单的方法:
在方法中AVCaptureVideoDataOutputSampleBufferDelegate:
let pixelBuffer = ...
let requestOptions: [VNImageOption: Any] = ...
let textRequest = VNDetectTextRectanglesRequest {request, error in
//### Capture `pixelBuffer` inside this closure.
self.detectText(from: pixelBuffer, request: request, error: error)
}
textRequest.reportCharacterBoxes = true
let imageRequestHandler = VNImageRequestHandler(cvPixelBuffer: pixelBuffer, orientation: CGImagePropertyOrientation(rawValue: 6)!, options: requestOptions)
do {
try imageRequestHandler.perform([textRequest])
} catch {
print(error)
}
Run Code Online (Sandbox Code Playgroud)
并将其用作:
func detectText(from buffer: CVPixelBuffer, request: VNRequest, error: Error?) {
//### Use `buffer` passed from the closure.
//...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2091 次 |
| 最近记录: |