J'utilise du code pour convertir entre iplimage et uiimage. Je prends une photo prise de la caméra (un UIImage) et la convertis en iplimage et en utilisant le code ci-dessous. Malheureusement, cela provoque une rotation et une extension de l'image de 90 degrés. donc si je prends une image 320x480 il revient une image 320x480 mais l'image a été tournée et redimensionnée de manière à ce qu'elle semble avoir été tournée de 90 degrés (soit une image 480x320) puis redimensionnée de façon non uniforme ... Je ne peux pas comprendre it out - tout semble juste (octet commande, etc.)Iphone Convertir IplImage à UIImage et retour provoque la rotation
+(IplImage *)CreateIplImageFromUIImage:(UIImage *)image {
CGImageRef imageRef = image.CGImage;
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
IplImage *iplimage = cvCreateImage(cvSize(image.size.width, image.size.height), IPL_DEPTH_8U, 4);
CGContextRef contextRef = CGBitmapContextCreate(iplimage->imageData, iplimage->width, iplimage->height,
iplimage->depth, iplimage->widthStep,
colorSpace, kCGImageAlphaPremultipliedLast|kCGBitmapByteOrderDefault);
CGContextDrawImage(contextRef, CGRectMake(0, 0, image.size.width, image.size.height), imageRef);
CGContextRelease(contextRef);
CGColorSpaceRelease(colorSpace);
return iplimage;
}
+(UIImage *)UIImageFromIplImage:(IplImage *)image {
NSLog(@"IplImage (%d, %d) %d bits by %d channels, %d bytes/row %s", image->width, image->height, image->depth, image->nChannels, image->widthStep, image->channelSeq);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
NSData *data = [NSData dataWithBytes:image->imageData length:image->imageSize];
CGDataProviderRef provider = CGDataProviderCreateWithCFData((CFDataRef)data);
CGImageRef imageRef = CGImageCreate(image->width, image->height,
image->depth, image->depth * image->nChannels, image->widthStep,
colorSpace, kCGImageAlphaPremultipliedLast|kCGBitmapByteOrderDefault,
provider, NULL, false, kCGRenderingIntentDefault);
UIImage *ret = [UIImage imageWithCGImage:imageRef scale:1.0 orientation:UIImageOrientationRight];
CGImageRelease(imageRef);
CGDataProviderRelease(provider);
CGColorSpaceRelease(colorSpace);
return ret;
}
j'avais cette erreur se produit lorsque je tente pour convertir IplImage de UIImage: CGImageCreate: bits d'image/pixel invalides: 8. quel est le problème? –
chostDevil
Oui, j'ai le même problème que chostDevil. –
Est-ce que quelqu'un a compris cela? –