我正在使用AVCaptureVideoDataOutput
. 我检查了 captureOutput 中的 pixelBuffer:
- (void)captureOutput:(AVCaptureOutput *)captureOutput
didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer
fromConnection:(AVCaptureConnection *)connection {
CVImageBufferRef pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
如果我在像素缓冲区中找到我想要的东西,那么我想保存这个图像以供以后图像处理。
我看到三个选项,我想知道哪个最好用:
- 我可以保存
sampleBuffer
或复制它 - 我可以保存
pixelBuffer
或复制它 - 我可以制作一个
CGImage
并pixelBuffer
保存它,然后当我需要进行图像处理时,我可以CGBitmapContextGetData()
用来取回位图以进行操作。似乎这里有一堆不需要的副本,我可以不用。
哪一种是保存位图以供以后处理的首选方法?我不需要保存位图超过几分钟,即不需要保存到文件系统。如果答案是 1 或 2,那么我可以只保留缓冲区还是需要通过malloc
and来复制它们memcpy
?