Я искал ответ на этот вопрос, и некоторые из них, похоже, могут быть тем, что мне нужно, но я не уверен. Я нашел этот вопрос № 9152851 и этот Вопрос № 2617625 и покопался в куче ссылок, но мне нужно какое-то направление здесь.
По сути, я отправляю асинхронный вызов для обработки изображения с помощью OpenCV. Вы можете видеть по коду здесь, что я превращаю его в NSData * перед отправкой обратно моему делегату.
NSData *proccessedData = [NSData dataWithBytes:processedImage.data length:(processedImage.rows * processedImage.cols)];
[self.delegate onProcessedBitmapReady:proccessedData withFocusQuality:focusQuality];
Но когда я возвращаюсь к своему делегату, мой обрабатываемый битмап имеет тип (OS_dispatch_data *) и содержит значение в байтах. Итак, когда я пытаюсь установить UIImage, для него устанавливается значение null.
- (void)onProcessedBitmapReady:(NSData *)processedBitmap withFocusQuality:(double)focusQuality
{
//Use comverted image from self.captureCommand onComplete
UIImage *image = [[UIImage alloc] initWithData:processedBitmap];
[self saveImage:image];
}
Вот скриншот со значениями:
Итак, как мне преобразовать эти байты (или что-то еще) во что-то, что я могу вставить в UIImage?
Спасибо заранее за вашу помощь.
-------------------------------------------------- ----- Добавление нового изображения ---------------------------------- -------
Помогает ли этот новый образ?
Спасибо.
NSData
, как и многие другие классы Foundation, на самом деле является кластером классов, а это означает, чтоNSData
просто предоставляет интерфейс.OS_dispatch_data
звучит как специализированный подкласс, который используется внутри Apple для передачиNSData
данных по блокам, но я могу ошибаться. Если он ведет себя как экземплярNSData
, возможно, так оно и есть, а формат изображения не распознаетсяUIImage
. - person JustSid   schedule 18.10.2013