1

このように、UIImage (inputImage) の RGB 値を読み取っています。

CGImageRef imageRef = inputImage.CGImage;
NSData *data = CFBridgingRelease(CGDataProviderCopyData(CGImageGetDataProvider(imageRef)));
unsigned char *pixels = (unsigned char *)[data bytes];

for(int i = 0; i < [data length]; i += 4) {
    int r = i;
    int g = i+1;
    int b = i+2;

    int rValue = (int)pixels[r];
    int gValue = (int)pixels[g];
    int bValue = (int)pixels[b];
}

それは完璧に機能します。しかし、そのコードの前に画像のサイズを変更する関数を使用すると、値がうまくいきません。たとえば、ピクセルが 255 赤である場合、ピクセルは 255 青であると言います。関数を使用すると、赤と青のRGBチャンネルが変更されると思います(私は知っています、それは意味がありません)。

これは、画像のサイズを変更するために使用する関数です。

- (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize {
//UIGraphicsBeginImageContext(newSize);
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage2 = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage2;
}

そして、これは私がそれを呼ぶ方法です:

inputImage = [self imageWithImage:inputImage scaledToSize:CGSizeMake(inputImage.size.width, inputImage.size.height)];

これは、同じサイズにサイズ変更しても発生します。データに奇妙なことが起こりますが、結果は正しく、画像は正しくサイズ変更されています。誰が問題を知っていますか?

4

1 に答える 1

0

デフォルトは RGB から BGR です。OpenCV は、チャネルの同じ転置を行います。

于 2013-12-28T20:56:55.603 に答える