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/

  • 相关阅读:
    BZOJ2061 : Country
    BZOJ3591: 最长上升子序列
    BZOJ4356 : Ceoi2014 Wall
    BZOJ2159 : Crash 的文明世界
    BZOJ2149 : 拆迁队
    BZOJ2739 : 最远点
    BZOJ4068 : [Ctsc2015]app
    BZOJ4361 : isn
    BZOJ4404 : [Neerc2015]Binary vs Decimal
    BZOJ4402 : Claris的剑
  • 原文地址:https://www.cnblogs.com/cocoajin/p/4165903.html
Copyright © 2011-2022 走看看