在UIImage和cv :: Mat之间转换而不复制数据?

时间:2016-02-16 21:26:52

标签: c++ ios objective-c opencv uiimage

是否可以在不复制图片的情况下在iOS UIImage和OpenCV cv::Mat之间进行转换?

examples in the OpenCV documentation显示CVGontextDrawImage用于将输入图像复制到cv::Mat

- (cv::Mat)cvMatFromUIImage:(UIImage *)image
{
  CGColorSpaceRef colorSpace = CGImageGetColorSpace(image.CGImage);
  CGFloat cols = image.size.width;
  CGFloat rows = image.size.height;

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

  CGContextRef contextRef = CGBitmapContextCreate(cvMat.data, ...);

  /***** image appears to be copied here *****/
  CGContextDrawImage(contextRef, CGRectMake(0, 0, cols, rows), image.CGImage);

  CGContextRelease(contextRef);

  return cvMat;
}

0 个答案:

没有答案
相关问题