9

私は単色の画像を持っており、それからいくつかの部分のサイズを異なるスケールで変更する必要があります。望ましい結果は画像に示されています。Opengles でグリッド メッシュを適用する方法を調べましたが、サンプル コードや詳細なチュートリアルが見つかりませんでした。imgwrapも調べましたが、このライブラリには qt フレームワークが必要であることがわかります。さらに読むためのアイデア、サンプルコード、またはリンクをいただければ幸いです。ここに画像の説明を入力

4

6 に答える 6

8

あなたが直面している問題は、コンピュータ グラフィックスで「画像のゆがみ」と呼ばれます。最初に、元の画像にいくつかの制御点を定義し、サンプルの目的の画像に対応する点を定義する必要があります。次に、高密度の変位フィールド (このアプリケーションではラッピング グリッドとも呼ばれます) を計算し、このフィールドを元の画像に簡単に適用する必要があります。

より実際的には、iOS での最善の策は、OpenGL で頂点の 2D グリッドを作成することです。元の画像をこのグリッド上にテクスチャとしてマップし、ポイントの一部を移動して元のグリッドを変形します。次に、glReadPixels を使用して、結果の画像のスクリーンショットを撮るだけです。

この種の変位フィールド マッピングを実装する CIFilter は知りません。

更新: 8 つの制御点を使用して OpenCV で画像をモーフィングするサンプル コードも見つけました。http://engineeering.blogspot.it/2008/07/image-morphing-with-opencv.html

OpenCV には iOS への移植が機能しているため、上記のリンクのコードをターゲット デバイスでも簡単に試すことができます。

于 2013-07-03T08:09:27.053 に答える
2

いくつかのアイデア:

  1. CGBitmapContextCreateImage() を使用して UIImage の一部を別の CGContext にコピーし、その部分をコピーして個別にスケーリングし、元に戻します。
  2. イメージの一部に CIFilter 効果を使用し、スケーリングする部分をマスキングします。(コア イメージ プログラミング ガイド)
于 2013-06-28T14:24:28.410 に答える
2

GitHub でBrad Larson のGPUImageプロジェクトをチェックすることをお勧めします。[視覚効果] の下GPUImageBulgeDistortionFilterには、ニーズに合わせて調整できるなどのフィルターがあります。

于 2013-07-04T06:25:17.390 に答える
1

おそらく、OpenGL シェーダーを見たいと思うでしょう。私がしたいことは、画像をテクスチャとしてロードし、フラグメント シェーダ (画像を歪ませる小さなプログラム) を適用し、結果をテクスチャにレンダリングして、そのテクスチャを表示することです。またはビットマップとして保存します。

単純ではありませんが、他の歪みのサンプル コードがいくつかあります。ここにシェーダーの渦があります: http://www.geeks3d.com/20110428/shader-library-swirl-post-processing-filter-in-glsl/

OpenGL を使用せずにこれを行う簡単な方法はないと思います。GPU の外部でこれを行っても、おそらく優れたパフォーマンスは見られないでしょう。

于 2013-07-03T23:47:24.337 に答える