问题描述
|
目前我有以下
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)];
}
我是否以错误的方式处理此问题?还是我的代码有误?
解决方法
该变换将其翻转,但是其围绕的轴不在图像中心,而是在左边缘。您还必须按其宽度平移图像,以解决缩放过程中引起的移动。
,这是一些可以帮助某人的代码==>
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;
我使用它来水平翻转前置摄像头中的帧,因此无论设备旋转了什么,它们始终会出现。这些东西确实有点棘手。要弄清楚到底发生了什么,要做的一件事是沿两个轴上的任意一个方向缩小并查看结果。