2011-11-17 22 views
8

Bir kullanıcının 7 segmentli bir görüntü şeklinde bir sayı (1 - 9) çizmesine izin vermeyi planlıyorum. Hangi numaranın çizildiğini tespit etmenin en iyi yolu nedir?iPhone ekranında kullanıcının parmağı tarafından çizilen numarayı tanımanın en iyi yolu

Tüm dokunmatik izleme ve UIGestureRecogniser öğelerini nasıl yapacağımı biliyorum - Bunu yapmak için iyi bir mantık arıyorum.

Şimdiye kadar, elimde: Bir dokunuş, segmentin 1 yarısından diğerine hareket ettiğinde, bu segmenti vurgulayın. Dokular bittiğinde, hangi noktaların vurgulandığına bakın ve hangi sayıların çizildiğine karar verin.

Düzeltmeyi düşündüğüm yollar: Ekrandaki parmak yolunun bir şeklini çizin. Çizgi bir segmentin ortasına kesişirse, bu segmenti vurgulayın.

Bunu yapmanın herhangi bir ipucu veya daha iyi yolu olan var mı? Herhangi bir öneriye açığım - tüm kodlarımı kazıyarak ve sıfırdan başlamak anlamına gelse bile.

+0

Kullanıcının önce uygulamayı çalıştırması gerekecek gibi görünüyor, bu yüzden 0 - 9'u birkaç kez çiziyorlar, nasıl yaptıklarını anlıyorsunuz, sonra numarayı belirlemeye çalıştığınız yerde yapıyorlar . İyi şanslar. –

+0

Bu segment tekniğini kullanmak zorunda mısın? Bu, bazı sinir ağlarının çözmesi için muhtemelen mükemmel olurdu. – janoliver

+0

Öneriler için teşekkürler. Nöral ağ fikrini – Craig

cevap

6

Çizilmiş sayı tanıma için $ strok tanıyıcılarının uygulamalarını kullandım.

  • $N Multistroke recognizer
  • Her iki algoritmaları

  • $1 Unistroke recognizer
    • birkaç Objective-C/iOS uygulamaları link. Tanılar, farklı algoritmalara dayalı olarak önceden tanımlanmış modellere karşı girişi karşılaştırır (bağlantılı sayfalarda ayrıntılı açıklama). Bunun çalışması için kendi numara kalıplarınızı oluşturmalısınız (temel olarak sadece bir şey çizin ve tanıyıcının bunu daha sonra kullanmak üzere sakladığınız bir veri yapısına dönüştürmesine izin verin). Ardından kullanıcı girdisinde bir eşleşme bulmak için daha önce kaydettiğiniz desenlerle karşılaştırın.

      $ 1 tanıyıcı, kullanıcı için numaraları ilk önce çizim yapmaya izin vereceğim uygulamam için yeterliydi. $ N tanıyıcı daha karmaşık stokları ayırt edebilir ve daha karmaşık çizilmiş sayıları kabul edebilir. Bu, deneyimlemeniz gereken bir şey.

    +0

    deneyeceğim. Bu bilgi için çok teşekkürler. Ne yazık ki, $ 1 tanıyıcı için ilk obj-c proje linki bozuldu, ancak elimden geldiğince çabuk deneyeceğim başkaları da var! – Craig

    +0

    Bugün bunu denedim: https://github.com/preble/GLGestureRecognizer. Söylemeye sevindim, WONDERFULLY. Harika bağlantı için tekrar teşekkürler! – Craig

    +0

    yardımdan memnun –

    2

    Numaraları 1-9 ile ilgileniyorsanız, BGNumericalGlyphRecognizer'a bakın. ScribbleMath (çocukların cevaplarını ekranda çizmelerini sağlayan bir matematik uygulaması) oluşturmak ve çekirdek mantığını açık kaynaklı olarak oluşturmak için birkaç N $ multistroke tanıyıcı ile çalıştım. $ N tanıdıklarının 6 ve 9'u ayırt etmekte zorlandıkları ve 1 ve "-" gibi çok basit harfleri tanımakta da kötü oldukları ortaya çıkıyor ve bunları daha iyi ele almak için mantık oluşturdum. Mükemmel değil, ama kutudan bir $ N tanıyıcıdan daha uzak olacak. Keyfini çıkarın!

    İlgili konular