Существует масса вопросов о преобразовании UIIMage в кодировку cv :: Mat с CV_8UC4. Там даже учебник на сайте OpenCV iOS.
Однако для жизни я не могу понять, как правильно преобразовать UIImage в 8UC3. Используя пример OpenCV, попытка конвертировать в 8UC1 также ломается, поскольку cv: Mat имеет тонну нулевых указателей после инициализации.
Любое понимание того, как я могу сделать это правильно? Благодарю!
Попробуйте вызвать следующее после преобразования UIImage в cv :: Mat...
cvtColor (srcMat, destMat, CV_RGBA2BGR);
Для меня, когда я хочу конвертировать из UIImage в Mat, я просто использую предопределенную функцию UIImageToMat следующим образом:
UIImageToMat(extractedUIImage, matImage);
Но сначала вам нужно включить этот файл заголовка из openCV:
#import <opencv2/highgui/ios.h>
То же самое для преобразования из Mat в UIImage:
UIImage *extractedImage = MatToUIImage(matImage);
Просто дайте ему попробовать, он отлично работает для меня