Изображение графического процессора — ошибка при создании CVPixelBufferCreate -6661

#ios #objective-c #ios7 #gpuimage

#iOS #objective-c #ios7 #изображение графического процессора

Вопрос:

Привет, я пытаюсь отредактировать одно изображение, используя новую настройку GPUImage, но я сталкиваюсь со следующей ошибкой.

 2014-07-06 11:52:46.966 App[4314:9d07] *** Assertion failure in -[GPUImageFramebuffer generateFramebuffer],   /Users/Desktop/Apps/App/App/framework/Source/GPUImageFramebuffer.m:156
2014-07-06 11:52:46.968 App[4314:9d07] *** Terminating app due to uncaught   exception 'NSInternalInconsistencyException', reason: 'Error at CVPixelBufferCreate -6661'
*** First throw call stack:
(0x2e52dfd3 0x38da6ccf 0x2e52dead 0x2eedad5b 0xb9ca7 0x6c481 0xb990f 0xb93cf 0xbbef1   0x6c481 0xbbc67 0x98229 0x61b39 0x98d9d 0x7065f 0x3928e833 0x39294f11 0x39294c97    0x39295a45 0x39295d29 0x393d0bd3 0x393d0a98)
libc  abi.dylib: terminating with uncaught exception of type NSException


GPUImagePicture *lookupImageSource = [[GPUImagePicture alloc] initWithImage:[UIImage imageNamed:@"BigApple1.png"]];

    GPUImageLookupFilter * filterLookup = [[GPUImageLookupFilter alloc] init];

    [stillImageSource addTarget:filterLookup];
    [lookupImageSource addTarget:filterLookup];

    [stillImageSource useNextFrameForImageCapture];
    [lookupImageSource useNextFrameForImageCapture];

    [stillImageSource processImage];
    [lookupImageSource processImage];

    finishedImage = [filterLookup imageFromCurrentFramebuffer];
  

Комментарии:

1. Я боролся с тем же самым. Убедитесь, что ваш объект UIImage имеет размер, отличный от CGSizeZero. Обычно это является причиной. Можете ли вы опубликовать полную ошибку, чтобы мы с другими могли вам лучше помочь?

2. Привет, да, я заменил код на образец из GPUImage readme, и он работает нормально. Как только я возвращаю его к описанному выше, проблема возвращается. Присутствуют как исходное изображение, так и источник поиска.

3. Можете ли вы попробовать метод «imageByFilteringImage:» непосредственно в объекте filter obj и посмотреть, выдается ли такая же ошибка?

Ответ №1:

Проблема решена, я пропустил дополнительный useNextFrameForImageCapture в GPUImageLookupFilter.

Комментарии:

1. Вам также не нужно это на входных данных (на самом деле, это может вызвать нежелательное поведение, если вы это сделаете). Это просто необходимо для фильтра, из которого вы собираетесь извлекать изображение.

2. Привет, Брэд, спасибо за информацию. Итак, если у меня есть цепочка фильтров, я должен поместить ее только в последний фильтр в этой цепочке?

3. Если этот последний фильтр является тем, из которого вы извлекаете изображение, да. Это нужно только для фильтров, из которых вы извлекаете изображение. В противном случае в этом нет необходимости.