zoukankan      html  css  js  c++  java
  • 获取AVCaptureSession samplebuffer 一像素的 rgb值

    获取AVCaptureSession samplebuffer 一像素的 rgb值

    typedef unsigned char byte;
    typedef struct RGBPixel{
        byte red, green, blue;
    } RGBPixel;
    
    - (void)captureOutput:(AVCaptureOutput *)captureOutput 
    didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer 
           fromConnection:(AVCaptureConnection *)connection 
    { 
        
        CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
        CVPixelBufferLockBaseAddress(imageBuffer,0);
        
        size_t bytesPerRow = CVPixelBufferGetBytesPerRow(imageBuffer);
        size_t width = CVPixelBufferGetWidth(imageBuffer);
        size_t height = CVPixelBufferGetHeight(imageBuffer);
        uint8_t *src_buff = (uint8_t*)CVPixelBufferGetBaseAddress(imageBuffer);
        
        CVPixelBufferUnlockBaseAddress(imageBuffer, 0);
        RGBPixel *pixelData = (RGBPixel *)src_buff;
    
        int len = bytesPerRow * height;
        for(int i=0; i<len; i+=4){
            
            RGBPixel pixel = pixelData[i/4];
            
            int a = 0;
            int r = pixel.red;
            int g = pixel.green;
            int b = pixel.blue;
    
            NSLog(@"first values = r:%d g:%d b:%d", r, g, b);
            
            a = src_buff[i+3];
            r = src_buff[i+2];
            g = src_buff[i+1];
            b = src_buff[i];
    
            NSLog(@"second values = r:%d g:%d b:%d", r, g, b);
     
        }
    
    }

    如果是BGRA

    typedef struct RGBPixel{
        byte blue, green, red;
    } RGBPixel;

    参考:http://iphonedevsdk.com/forum/iphone-sdk-development/

  • 相关阅读:
    画笔
    进程和线程<二>
    进程和线程<一>
    文件<2>
    文件<1>
    窗口(3)
    窗口<二>
    窗口(1)
    消息
    位图
  • 原文地址:https://www.cnblogs.com/cocoajin/p/4165903.html
Copyright © 2011-2022 走看看