0

我正在尝试使用 AV Foundation 实现 QRcode 阅读器。我的计划是连续捕获图像,将捕获的图像发送到二维码检测器,直到识别出有效代码。检测器需要CGImageRefUIImage作为输入。我的问题是:

  1. 我应该使用哪个输出:AVCaptureVideoDataOutputAVCaptureStillImageOutput
  2. 如何连续拍摄每张图像,例如 500 毫秒?间隔应该多长?
4

2 回答 2

1

AVCaptureVideoDataOutput为您提供未压缩的 YUV 帧,如果它支持未压缩的输入,您可以轻松地将其发送到 QRCode 阅读器。因此,您将避免解码操作。

如果AVCaptureVideoDataOutput使用,您可以设置帧速率AVFormatDescription并将其设置为AVCaptureDevice. 启动后,AVCaptureSession您会以指定的帧速率连续接收帧,直到停止为止。通常,您可以设置 5 fps 并确保此操作是异步的,并且您最好在不同的线程中处理 QRCode,以便在两个帧捕获事件之间处理 QRCode 解码操作。

于 2013-04-19T14:06:47.610 回答
0

创建 AVCaptureVideoDataOutput 的实例。将 AVCaptureDataOutput 的 sampleBufferDelegate 设置为您想要接收样本缓冲区的任何类(比如 x)。确认类 x 到 AVCaptureVideoDataOutputSampleBufferDelegate 协议。实现 - captureOutput:didOutputSampleBuffer:fromConnection: 类 x 中该协议的方法。将 AVCaptureVideoDataOutput 实例添加到 AVCaptureSession。然后开始会话。您将收到带有样本缓冲区的回调。

于 2013-04-26T17:30:39.933 回答