美文网首页
iOS&MAC摄像头采集格式

iOS&MAC摄像头采集格式

作者: MiHuASAMA | 来源:发表于2017-05-26 14:31 被阅读0次
      kCVPixelFormatType_420YpCbCr8Planar = 'y420',  
     /* Planar Component Y'CbCr 8-bit 4:2:0.  baseAddr points to a big-endian CVPlanarPixelBufferInfo_YCbCrPlanar struct */
    
      kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange = '420v', 
    /* Bi-Planar Component Y'CbCr 8-bit 4:2:0, video-range (luma=[16,235] chroma=[16,240]).  baseAddr points to a big-endian CVPlanarPixelBufferInfo_YCbCrBiPlanar struct */
    
      kCVPixelFormatType_420YpCbCr8BiPlanarFullRange  = '420f', 
    /* Bi-Planar Component Y'CbCr 8-bit 4:2:0, full-range (luma=[0,255] chroma=[1,255]).  baseAddr points to a big-endian CVPlanarPixelBufferInfo_YCbCrBiPlanar struct */ 
    
    
    YpCbCr

    Y分量:Y,U分量:Cb,V分量:Cr。即YUV格式的数据。
    #######8-bit
    并且每个点采用8bit来保存一个Y的亮度。

    4:2:0

    YUV的详细格式为:4:2:0。

    baseAddr points to a big-endian CVPlanarPixelBufferInfo_YCbCrPlanar struct

    YUV数据的地址在CVPlanarPixelBufferInfo_YCbCrPlanar中以大端的形式存储。

    Planar & Bi-Planar

    第一个是Planar模式,第二个是BiPlanar模式。
    Planar格式就是单平面模式,在这个模式下,一个buf存储所有的数据。将Y、U、V分量分别打包,依次存储。即YYYY...U...V...即I420.
    BiPlanar格式就是双平面模式,在这个模式下,亮度和色度被分成两个buf来存储。将Y和UV分别打包,一次存储。即YYYY...UV...即NV12.

    VideoRange & FullRange

    亮度和色度的取值为8位,即2^8 = 256即可取值为【0-255】
    VideoRange能取的值宽度为【16-235】
    FullRange能取得值宽度为【0-255】

    采集信息查看

    查看采集到的信息。

    CMSampleBufferGetFormatDescription(sampleBuffer);
    

    #######如何从采集的CMSampleBufferRef中取得YUV数据
    转化为CVImageBufferRef:

    CVImageBufferRef buffer = CMSampleBufferGetImageBuffer(sampleBuffer);
    

    获取宽高:

    CVPixelBufferGetWidth(pixelBuffer);
    CVPixelBufferGetHeight(pixelBuffer);
    

    取得YUV数据地址:

    CVPixelBufferGetBaseAddressOfPlane(pixelBuffer,Plane_index);
    //这里的Plane_index与上文的Plane模式相关
    如果是Plane模式则直接取到所有数据
    如果是BiPlane则需要分两次,即Plane_index=0取得Y分量地址与Plane_index=1取得UV分量的地址
    
    注意事项

    在操作pixelBuffer的时候记得加上锁

        CVPixelBufferLockBaseAddress(pixelBuffer, lockFlag);
        //在这里操作
        CVPixelBufferUnlockBaseAddress(pixelBuffer, lockFlag);
    

    相关文章

      网友评论

          本文标题:iOS&MAC摄像头采集格式

          本文链接:https://www.haomeiwen.com/subject/fcfxfxtx.html