質問

私は自分のプログラムのフィルター(ウェブカメラをストリーミングする)のフィルターを作成しようとしています。

ただし、コンパイルして実行している間、フィルターはそれに影響を与えないようです。

これがコードです:

CIImage *resultImage = image;
CIFilter *flipFilter = [CIFilter filterWithName:@"CIAffineTransform"];
[flipFilter setValue:resultImage forKey:@"inputTransform"];

NSAffineTransform* flipTransform = [NSAffineTransform transform];
[flipTransform scaleXBy:-1.0 yBy:1.0]; //horizontal flip
[flipFilter setValue:flipTransform forKey:@"inputTransform"];

resultImage = [flipFilter valueForKey:@"outputImage"];

奇妙なことに、他のフィルターは機能しているように見えます。例えば:

CIFilter * ciEffectFilter = [CIFilter filterWithName:@"CIGloom"];
[ciEffectFilter setDefaults];
CIImage *resultImage = image;
[ciEffectFilter setValue: resultImage forKey:@"inputImage"];
[ciEffectFilter setValue:[NSNumber numberWithFloat: 0.75]
                  forKey:@"inputIntensity"];
[ciEffectFilter setValue:[NSNumber numberWithFloat: 20]
                  forKey:@"inputRadius"];
resultImage = [ciEffectFilter valueForKey:@"outputImage"];


CIFilter *ciCropFilter = [CIFilter filterWithName:@"CICrop"];
[ciCropFilter setDefaults];
[ciCropFilter setValue: resultImage forKey:@"inputImage"];
[ciCropFilter setValue: [CIVector vectorWithX:50 Y:50 Z:300 W:
                         300] forKey:@"inputRectangle"];

resultImage = [ciCropFilter valueForKey:@"outputImage"];

それはnsaffinetransformと関係がありますか?私は周りを見回しましたが、答えは見つかりませんでした。ヒープに感謝します!

役に立ちましたか?

解決

これが問題であるかどうかはわかりませんが、最初のコードスニペットでは、同じキーに2つの異なる値を設定しています(設定します inputTransform 2回)、私は最初のものは inputImage 代わりは。代わりに次のことを試してください:

CIImage *resultImage = image;
CIFilter *flipFilter = [CIFilter filterWithName:@"CIAffineTransform"];
[flipFilter setValue:resultImage forKey:@"inputImage"];

NSAffineTransform* flipTransform = [NSAffineTransform transform];
[flipTransform scaleXBy:-1.0 yBy:1.0]; //horizontal flip
[flipFilter setValue:flipTransform forKey:@"inputTransform"];

resultImage = [flipFilter valueForKey:@"outputImage"];

また、画像の幅でX軸を翻訳する必要があるかもしれません

[flipTransform translateXBy:... yBy:0];

他のヒント

CIImage *cimage = [[CIImage alloc] initWithImage:image];

Ciimageオブジェクトを割り当てていません。このコードを試してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top