Ich verwende einen Code, um zwischen iplimage und uiimage zu konvertieren. Ich nehme ein Foto von der Kamera (ein UIImage) und wandle es mit dem unten angegebenen Code in ein ipimage und zurück um. Leider wird dadurch das Bild um 90 Grad gedreht und gestreckt. also, wenn ich ein 320x480 Bild nehme, kommt ein 320x480 Bild zurück, aber das Bild wurde gedreht und neu skaliert, so dass es aussieht als wäre es um 90 Grad gedreht (also ein 480x320 Bild) dann ungleichmäßig skaliert ... ich kann nicht sehen it out - alles scheint richtig (Byteanordnung usw.)Iphone Konvertieren von IplImage in UIImage und zurück verursacht 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;
}
Ich hatte diesen Fehler auftritt, wenn ich versuche IplImage von UIImage konvertieren: CGImageCreate: ungültiges Bild Bits/Pixel: 8. Was ist das Problem? –
chostDevil
Ja, ich bekomme das gleiche Problem wie ChostDevil. –
Hat jemand das herausgefunden? –