vImage의 vImageHistogramCalculation_ARGBFFFF
을 사용하여 이미지의 막대 그래프를 계산하려고 시도했지만 kvImageNullPointerArgument
(오류 코드 -21772) vImage_Error
이 표시됩니다. 내가이 문서에 따르면, "네 개의 막대 그래프의 배열에 대한 포인터"있어야하는데, 내 histogram
매개 변수, 함께 할 수있는 뭔가가 의심vImageHistogramCalculation을 사용하여 이미지의 막대 그래프 계산
- (void)histogramForImage:(UIImage *)image {
//setup inBuffer
vImage_Buffer inBuffer;
//Get CGImage from UIImage
CGImageRef img = image.CGImage;
//create vImage_Buffer with data from CGImageRef
CGDataProviderRef inProvider = CGImageGetDataProvider(img);
CFDataRef inBitmapData = CGDataProviderCopyData(inProvider);
//The next three lines set up the inBuffer object
inBuffer.width = CGImageGetWidth(img);
inBuffer.height = CGImageGetHeight(img);
inBuffer.rowBytes = CGImageGetBytesPerRow(img);
//This sets the pointer to the data for the inBuffer object
inBuffer.data = (void*)CFDataGetBytePtr(inBitmapData);
//Prepare the parameters to pass to vImageHistogramCalculation_ARGBFFFF
vImagePixelCount *histogram[4] = {0};
unsigned int histogram_entries = 4;
Pixel_F minVal = 0;
Pixel_F maxVal = 255;
vImage_Flags flags = kvImageNoFlags;
vImage_Error error = vImageHistogramCalculation_ARGBFFFF(&inBuffer,
histogram,
histogram_entries,
minVal,
maxVal,
flags);
if (error) {
NSLog(@"error %ld", error);
}
//clean up
CGDataProviderRelease(inProvider);
}
:
여기 내 코드입니다. 나는 그것을 정확하게 선언하고 있는가?
감사합니다.
문제는 다음과 같습니다.'vImagePixelCount * histogram [4] = {0};'히스토그램 결과를 포함하기 위해 4 개의 널 포인터 배열을 초기화하고 있습니다. 다른 사람이 먼저 도착하지 않으면 나중에 답변으로 더 자세하게 설명해 드리겠습니다. –
안녕하세요. @StephenCanon, 당신과 별개로 생각한 것 같습니다. 위의 귀하의 의견에 대한 자세한 내용은 훌륭합니다! – Eric
@ 에릭 ... 나는 스티븐의 논리를 시험해 보았고 두 경우 모두 EXC_BAD_Access를 얻었습니다. 당신이 나에게 잘못했을 수있는 것을 제안 해 주시겠습니까? – Imran