Зеркальное отображение CIImage / NSImage - PullRequest
0 голосов
/ 25 мая 2011

В настоящее время у меня есть следующее

 CIImage *img = [CIImage imageWithCVImageBuffer: imageBuffer];

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

Это прекрасно работает, я могу использовать NSImage, и при записи в файл изображение именно так, как мне нужно.

Однако я извлекаю это изображение из пользователей iSight с помощью QTKit, поэтому мне нужно иметь возможность перевернуть это изображение по оси Y.

Моей первой мыслью было преобразование CIImageиспользуя что-то вроде этого, однако мое окончательное изображение всегда получается совершенно пустым.При записи в файл размеры правильные, но они кажутся пустыми.

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

Я неправильно подхожу к этому?Или я допустил ошибку в своем коде?

Ответы [ 2 ]

3 голосов
/ 25 мая 2011

Это преобразование переворачивает его, но ось, вокруг которой он переворачивается, находится не в центре изображения, а у левого края. Вы также должны перевести изображение по его ширине, чтобы учесть движение, вызванное масштабом.

1 голос
/ 30 марта 2013

Вот некоторый код, который может помочь кому-то ==>

    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;

Я использую его для переворачивания кадров с фронтальной камеры по горизонтали, чтобы они всегда появлялись независимо от поворота устройства.Этот материал становится немного сложным.Чтобы выяснить, что происходит, нужно уменьшить масштаб по одной из осей и посмотреть, каков будет результат.

...