2012-05-07 10 views
12

私は自分のアプリケーションの機能に固執しています。私はCam Scanner Croppingと同様のクロッピング機能が必要です。 CAM-SCANNERの画面は次のとおりです。 同様のクロップビューを作成しました。UIImageのカムカナーをクロッピングする

enter image description here

enter image description here

私は四隅のするCGPointを得ています。 しかし、どのように斜めに切り取った画像を取得できますか?

可能であれば、私にいくつかの提案をしてください。

+0

こんにちは、あなたは上記のものを実装しているか、可能な場合は、任意のチュートリアルや役に立つリンクを共有してくださいする方法を教えてくださいできますか? –

+0

こんにちはデベロッパー、あなたはこの問題の解決策を得ていますか?この機能のコードを追加してください。私はこのように正確に必要です。 – Mani

答えて

3

2つの可能性があります。最初は、画像を斜めにして、ビューのレイヤのCATransform3Dプロパティにインストールする変換行列を計算することです。

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

もう1つの方法は、クロップしている画像の部分をOpenGLテクスチャに変え、テクスチャを出力にマッピングすることです。実際のテクスチャ描画の部分は簡単ですが、OpenGLのセットアップには約1000キロの設定があり、何かを何かするために学習することが大変です。そのルートを追求する場合は、新しいiOS 5 GLKitを使用して、単純な2Dテクスチャの例を検索することをおすすめします。

4

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

同様に、最初の画像に四角形の選択コーナーがあり、四角形で変換すると、ピクセル情報(interpolation)を追加するか、ピクセルを削除する必要があります。

実際の問題は、クロップされた画像に追加のピクセル情報を追加し、それを投影して2番目の画像を生成することです。

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

<>OpenGLを使用できます。

<>OpenCVを使用できます。 ..それを実装する方法はまだまだあります。

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

  1. cvPerspectiveTransform

  2. cvWarpPerspective

第一の機能は、送信元と宛先の投影座標を用いて変換行列を計算します。あなたの場合、src配列はすべてのコーナーのCGPointからの値を持ちます。destには、{(0,0)(200,0)(200,150)(0,150)}などの矩形投影点があります。

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

OpenCVライブラリには他にもいくつかの選択肢があるかもしれませんが、画像処理アルゴリズムの優れたコレクションがあります。

opencvライブラリを使用したiOSアプリケーションはeosgardenにあります。リンクに与えられたコード使用

+0

ちょっと、これらの四角形のCGPointを取得することができるので、切り抜きのための視点を描くことができます – Mukesh

0

:私はこれを試したhavnt ...しかし、私はTouchesBeganにCGContextClosePathを使用して、閉じたパスを描画しようとしたものの代わりにCGRectとCGContextClipToRectを使用してのhttp://www.hive05.com/2008/11/crop-an-image-using-the-iphone-sdk/

はCGContextEOClip OR CGContextClosePathに

を使用してみてくださいおよびTouchesMovedおよびTouchesEndイベント。これはあなたの問題に多くの洞察力を与えることができ

希望...