ulimage to iplimage

时间:2011-04-04 10:07:16

标签: iphone opencv

我尝试将黑色白色UIImage转换为IplImage,但是从控制台提供这些。什么不可以做?

CGBitmapContextCreate: unsupported parameter combination: 8 integer bits/component; 16 bits/pixel; 1-component color space; kCGImageAlphaPremultipliedLast; 84 bytes/row.

CGContextDrawImage: invalid context 0x0.


notaImage = [UIImage imageWithCGImage:drawImage];
         //UIImageWriteToSavedPhotosAlbum(notaImage, self, @selector(imageSavedToPhotosAlbum: didFinishSavingWithError: contextInfo:), nil);
         vec_iphone.push_back(notaImage);    
         CGImageRef i_Ref = notaImage.CGImage;

         CGColorSpaceRef color_S = CGColorSpaceCreateDeviceGray();
             // Creating temporal IplImage for drawing
         IplImage *nota_img = cvCreateImage(
                                  cvSize(notaImage.size.width,notaImage.size.height), IPL_DEPTH_8U, 1
                                 );
             // Creating CGContext for temporal IplImage
         CGContextRef c_Ref = CGBitmapContextCreate(
                                        nota_img->imageData, nota_img->width, nota_img->height,
                                        nota_img->depth, nota_img->widthStep,
                                        color_S, kCGImageAlphaPremultipliedLast|kCGBitmapByteOrderDefault
                                      );

             // Drawing CGImage to CGContext
             CGContextDrawImage(
                                c_Ref,
                                CGRectMake(0, 0, notaImage.size.width, notaImage.size.height),
                                i_Ref
                                );

             //


             vec_images.push_back(nota_img);
             CGContextRelease(c_Ref);
             CGColorSpaceRelease(color_S);
             CGImageRelease(i_Ref);

1 个答案:

答案 0 :(得分:1)

由于您的输入图像为灰色,因此您的上下文格式不包含任何Alpha通道,因此使用kCGImageAlphaPremultipliedLast不正确。请改为kCGImageAlphaNone