0

目前我有以下

 CIImage *img = [CIImage imageWithCVImageBuffer: imageBuffer];

 NSCIImageRep *imageRep = [NSCIImageRep imageRepWithCIImage:img];
 NSImage *image = [[[NSImage alloc] initWithSize: [imageRep size]] autorelease];
 [image addRepresentation:imageRep];

这完美地工作,我可以使用 NSImage 并且当写入文件时,图像正是我需要的样子。

但是,我使用 QTKit 从用户 iSight 中提取此图像,因此我需要能够在 y 轴上翻转此图像。

我的第一个想法是使用这样的东西来转换 CIImage,但是我的最终图像总是完全空白。当写入文件时,尺寸是正确的,但看起来是空的。

- (CIImage *)flipImage:(CIImage *)image
{
    return [image imageByApplyingTransform:CGAffineTransformMakeScale(-1, 1)];
}

我是以错误的方式接近这个吗?还是我在代码中犯了错误?

4

2 回答 2

3

该变换会翻转它,但它翻转的轴不在图像的中心,而是在左边缘。您还必须按图像的宽度平移图像,以考虑在缩放期间引起的移动。

于 2011-05-25T18:07:13.030 回答
1

这是一些可以帮助某人的代码==>

    CGAffineTransform rotTrans = CGAffineTransformMakeRotation(M_PI_2);
    CGAffineTransform transTrans1 = CGAffineTransformTranslate(rotTrans, 0.0f, 320.0f);
    CGAffineTransform scaleTrans = CGAffineTransformScale(transTrans1, 1.0, -1.0);
    CGAffineTransform transTrans2 = CGAffineTransformTranslate(scaleTrans, -0.0f, -320.0f);

    self.view.transform = transTrans2;

我用它水平翻转前置摄像头的帧,因此无论设备旋转什么,它们总是出现。这东西确实有点棘手。帮助弄清楚正在发生的事情的一件事是沿任一轴按比例缩小并查看结果。

于 2013-03-30T02:01:19.507 回答