Преобразование UIImage в cv :: Mat

У меня есть UIImage, представляющий собой снимок, снятый с камеры iPhone, и теперь я хочу, чтобы UIImage был преобразован в cv :: Mat (OpenCV). Я использую следующие строки кода для достижения этой цели:

-(cv::Mat)CVMat
{

CGColorSpaceRef colorSpace = CGImageGetColorSpace(self.CGImage);
CGFloat cols = self.size.width;
CGFloat rows = self.size.height;

cv::Mat cvMat(rows, cols, CV_8UC4); // 8 bits per component, 4 channels

CGContextRef contextRef = CGBitmapContextCreate(cvMat.data,                 // Pointer to backing data
                                                cols,                      // Width of bitmap
                                                rows,                     // Height of bitmap
                                                8,                          // Bits per component
                                                cvMat.step[0],              // Bytes per row
                                                colorSpace,                 // Colorspace
                                                kCGImageAlphaNoneSkipLast |
                                                kCGBitmapByteOrderDefault); // Bitmap info flags

CGContextDrawImage(contextRef, CGRectMake(0, 0, cols, rows), self.CGImage);
CGContextRelease(contextRef);

return cvMat;
}

Этот код прекрасно работает для UIImage в ландшафтном режиме, но когда я использую тот же код с изображениями, взятыми из портретного режима, изображения поворачиваются на 90 градусов вправо.

Я новичок в iOS и Objective C и, следовательно, я не могу понять, что не так.

Может кто-нибудь сказать мне, что не так с кодом или я что-то упустил.

Ответы на вопрос(2)

Ваш ответ на вопрос