2016-11-17 1 views
0

私のアプリでは、イメージにCIFilter(CIBumpDistortion)を適用しようとしています。 私の問題は、kcIInputCenterKeyパラメータを使用すると、番号の付いた座標を与えなければならないようです。私はアプリを実行すると、このコードは、左眼の座標を返します。IOSコアイメージフィルタパラメータ

if (face.hasLeftEyePosition) { 
       NSLog("Left eye %g %g", face.leftEyePosition.x, face.leftEyePosition.y); 

Hence, I can manually then enter the left eye coordinates into the kCInputCenterKey and then run the app again and the filter is applied to the left eye centre point: 

let filter = CIFilter(name: "CIBumpDistortion") 
      filter?.setValue(ciImage, forKey: kCIInputImageKey) 
      filter?.setValue(0.5, forKey: kCIInputScaleKey) 
      filter?.setValue(200, forKey: kCIInputRadiusKey) 

      filter?.setValue(CIVector(x:150, y: 150), forKey: kCIInputCenterKey) 
      if let output = filter?.value(forKey: kCIOutputImageKey) as? CIImage { 
       self.chosenImage?.image = UIImage(cgImage: context.createCGImage(output, from: output.extent)!) 

をしかし、私は、ユーザーが望むように使用するために任意の画像を選択できるように、私は左目の位置を見つけ、適用するのXcodeが必要私は手動で座標を入力する必要はありません。

私はxとy座標に必要な数字の代わりに文字列、異なるタイプなどを使用しようとしましたが、すべて運がありません。

ご協力いただきまして誠にありがとうございます。

答えて

0

ここで私は物事を読んでいる。ユーザーは未知のソース(カメラ?フォトアルバム?カメラロール?)から画像を選択する必要があります。

  • 、ユーザが選択した画像は、画像の静的なセットからのものである場合は、手動でX/Yの値を検索し、フィルタに渡す前に、コードでその値を格納する必要があります。ユーザーが選択した画像を選択する前に完全に不明である場合

  • することは、あなたが本当にユーザー、左目ではありませんXcodeのディクテーションを持つ必要があります。 (あなたは私はあなたが正しいこと難しく時間を持っていると思いエッジ検出フィルタを試すこともできますが。)後者の場合には

私は、最初のポイントのためにタップし、2-4ジェスチャー認識機能を追加することを検討したいです、ピンチで領域のサイズを変更したり、回転(回転)およびパン(移動)することができます。

+0

こんにちは、dfd、多くのご意見ありがとうございます。私は一般的にコーディングするのが比較的新しいですし、ジェスチャーレコグナイザーを試みることは決して考えていませんでした!もう一度ありがとう、私はもう一度それを与えるでしょう。 – Henry