카메라 입력을 실시간으로보고 중간 픽셀의 색상 값을 가져 오는 프로그램이 있습니다.CVPixelBuffer에서 원하는 데이터 가져 오기 참조
// Get a CMSampleBuffer's Core Video image buffer for the media data
CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
// Lock the base address of the pixel buffer
CVPixelBufferLockBaseAddress(imageBuffer, 0);
// Get the number of bytes per row for the pixel buffer
size_t bytesPerRow = CVPixelBufferGetBytesPerRow(imageBuffer);
// Get the pixel buffer width and height
size_t width = CVPixelBufferGetWidth(imageBuffer);
size_t height = CVPixelBufferGetHeight(imageBuffer);
unsigned char* pixel = (unsigned char *)CVPixelBufferGetBaseAddress(imageBuffer);
NSLog(@"Middle pixel: %hhu", pixel[((width*height)*4)/2]);
int red = pixel[(((width*height)*4)/2)+2];
int green = pixel[(((width*height)*4)/2)+1];
int blue = pixel[((width*height)*4)/2];
int alpha = 1;
UIColor *color = [UIColor colorWithRed:(red/255.0f) green:(green/255.0f) blue:(blue/255.0f) alpha:(alpha)];
I이 화학식 비록 : 다음 I는 다음과 같은 코드를 사용하여 화소의 RGB 값을 잡아 (a CVPixelBuffer으로 판독하는 일)이 AVCaptureSession 출력에서 CMSampleBuffer 잡아 방법 I은 captureOutput를 사용 ((width * height) * 4)/2는 중간 픽셀을 얻지 만 이미지의 중간 중간 픽셀을 제공합니다. 화면 중간의 픽셀에 액세스하기 위해 어떤 수식을 사용해야하는지 궁금합니다. 이 픽셀 버퍼의 내부 구조를 실제로 알지 못하기 때문에 다소 고생했습니다.
미래에는 4 개의 중간 픽셀을 잡고 더 정확한 색상 판독 값을 얻고 싶습니다. 그러나 지금은 이러한 것들이 어떻게 작동하는지 알고 싶습니다.
예, 당신이 어떤 세로 모드 작업을하고 그래서 만약 아이폰 OS 장치에있는 두 개의 카메라의 기본 방향은 가로 당신 ' 회전 된 프레임을 처리해야합니다. –
@Codo 어떤 조언이 있으십니까? http://stackoverflow.com/questions/37611593/how-to-create-cvpixelbufferref-with-yuv420i420-data –
호기심, 왜 너비 부분에 4가 곱해지고 있습니까? – OutOnAWeekend