Objective-C中框架的水平翻转 [英] Horizontal Flip of a frame in Objective-C
问题描述
我正在尝试为我的程序(流式网络摄像头)创建一个过滤器,使框架水平翻转,使网络摄像头像镜子一样。
I am trying to create a filter for my program (which streams a webcam) which makes the frame flip horizontally, making the webcam act like a mirror.
但是,尽管它可以编译和运行,但过滤器似乎对其没有任何影响。
However, while it compiles and runs, the filter does not seem to have any effect on it.
以下是代码:
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"];
奇怪的是,其他过滤器似乎也起作用。例如:
Strangely enough, other filters appear to work. For example:
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有关系吗?我环顾四周,但未找到任何答案。
感谢堆!
Is it something to do with NSAffineTransform? I have looked around, but I have not found any answers. Thanks heaps!
推荐答案
我不确定这是否是问题,但是在您的第一个代码段中,为同一个键设置两个不同的值(您两次设置 inputTransform
),我认为第一个应该是 inputImage
代替。请尝试以下操作:
I'm not sure if this is the problem, but in your first code snippet you are setting two different values for the same key (you set inputTransform
twice), I think the first one should be inputImage
instead. Try the following instead:
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轴
Also, you may need to translate the X axis by the width of the image
[flipTransform translateXBy:... yBy:0];
这篇关于Objective-C中框架的水平翻转的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!