12

アプリケーション機能に行き詰まっています。Cam Scanner Cropping と同様のトリミング機能が必要です。CAM-SCANNER の画面は以下のとおりです。 同様のクロップ ビューを作成しました。

ここに画像の説明を入力

ここに画像の説明を入力

四隅のCGPointを取得しています。しかし、斜めにトリミングされた画像を取得するにはどうすればよいですか。

可能であれば、いくつかの提案をお願いします。

4

3 に答える 3

5

透視変換の問題です。この場合、彼らは 2D 平面に 3D 投影をプロットしています。

最初の画像には四角形の選択コーナーがあり、それを長方形に変換すると、ピクセル情報を追加するか(補間)、いくつかのピクセルを削除する必要があります。

したがって、実際の問題は、トリミングされた画像に追加のピクセル情報を追加し、それを投影して2番目の画像を生成することです。さまざまな方法で実装できます。

<> 透視変換行列を補間で適用することで、独自に実装できます。

<> OpenGLを使用できます。

<> OpenCVを使用できます。..そして、それを実装する方法は他にもたくさんあります。

OpenCVを使用してこの問題を解決しました。OpenCV の次の関数は、これを達成するのに役立ちます。

  1. cvPerspectiveTransform

  2. cvWarpPerspective

最初の関数は、ソースと宛先の投影座標を使用して変換行列を計算します。あなたの場合、src 配列には、すべてのコーナーの CGPoint からの値が含まれます。また、dest には、{(0,0)(200,0)(200,150)(0,150)} などの長方形の投影点があります。

変換行列を取得したら、それを 2 番目の関数に渡す必要があります。このスレッドにアクセスできます。

OpenCV ライブラリに代わるものは他にほとんどないかもしれませんが、画像処理アルゴリズムの優れたコレクションがあります。

opencvライブラリを使用した iOS アプリケーションは、eosgardenで入手できます。

于 2012-05-14T19:21:56.593 に答える
3

2つの可能性が見えます。1 つ目は、画像を傾ける変換マトリックスを計算し、それをビューのレイヤーの CATransform3D プロパティにインストールすることです。

ストレッチを行う変換行列を形成する方法を知っていれば、それは簡単です。画像を引き延ばしたり歪めたりする変換行列を構築する方法を学んだことがないので、何の助けにもなりません。グーグル変換マトリックスとストレッチ/スキューイングをお勧めします。

もう 1 つの方法は、切り抜く画像の一部を OpenGL テクスチャに変換し、そのテクスチャを出力にマップすることです。実際のテクスチャ描画部分は簡単ですが、約 1000 キロの OpenGL セットアップを行う必要があり、何かを成し遂げるためには多くのことを学ぶ必要があります。その方法を追求したい場合は、新しい iOS 5 GLKit を使用して単純な 2D テクスチャの例を検索することをお勧めします。

于 2012-05-08T00:18:42.397 に答える
0

リンクで指定されたコードを使用: http://www.hive05.com/2008/11/crop-an-image-using-the-iphone-sdk/

CGRect と CGContextClipToRect を使用する代わりに、CGContextEOClip または CGContextClosePath を使用してみてください

私はこれを試したことはありませんが...しかし、TouchesBeganおよびTouchesMovedおよびTouchesEndイベントでCGContextClosePathを使用して閉じたパスを描画しようとしました。

これがあなたの問題へのより多くの洞察を与えることを願っています...

于 2012-05-15T17:12:41.097 に答える