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;

フロントカメラのフレームを水平方向に反転させるために使用しているので、デバイスの回転に関係なく常にフレームが表示されます。このようなものはちょっとトリッキーになります。何が起こっているのかを理解するために行うべきことの1つは、いずれかの軸に沿ってスケールダウンし、結果がどうなるかを確認することです。

于 2013-03-30T02:01:19.507 に答える