2016-02-18 22 views
7

Wygląda na to, że znalazłem się w głębokim chwastach interfejsu API Google Vision do skanowania kodów kreskowych. Być może mój umysł jest trochę smażony po obejrzeniu różnego rodzaju alternatywnych bibliotek (ZBar, ZXing, a nawet niektórych niedrogich implementacji stron trzecich), ale mam trudności ze znalezieniem jakiejkolwiek informacji o tym, gdzie mogę przeprowadzić jakieś skanowanie ograniczenie regionu.Obszar wykrywania limitu w wizji API

Przypadek użycia jest dość prosty: jeśli jestem użytkownikiem wskazującym mój telefon na pudełku z wieloma kodami kreskowymi tego samego typu (pomyśl o etykietach wysyłkowych tutaj), chcę wyraźnie wskazać jakiś mały wizjer lub wyrównanie prosto - na ekranie dokładnie to, co próbuję uchwycić, bez martwienia się o nic poza tym obszarem zainteresowania, dając mi wyniki skanowania, których nie chcę.

Powyższy przypadek jest obsługiwany w większości innych bibliotek Androida, które widziałem, przyjmując albo Rect ze względnymi albo absolutnymi współrzędnymi, a także jest częścią systemu wyników metadanych systemu iOS AVCapture (używa względnego CGRect, ale tak naprawdę to samo pojęcie).

Dosłownie zagłębiłem się w przykładową aplikację dla czytnika kodów kreskowych here, ale wdrożenie jest odrobinę nieprzejrzyste, aby uzyskać wszystko oprócz szczegółów implementacji wysokiego poziomu.

Wygląda na paskudną łatkę, po udanym wykryciu kodu kreskowego w dowolnym miejscu w ramce podglądu kamery, na prostej no-op na kodach kreskowych poza obszarem zainteresowania, ponieważ urządzenie nadal pracuje ciężko, aby obliczyć te ramki.

Czy brakuje mi czegoś bardzo prostego i oczywistego na tym? Wszelkich pomysłów na sposób, aby wdrożyć to czysto, inaczej?

Wielkie dzięki za poświęcony czas na przeczytanie tego!

Odpowiedz

2

Interfejs API obecnie nie ma możliwości ograniczenia obszaru wykrywania. Możesz jednak przyciąć obraz podglądu, zanim przejdzie on do detektora kodów kreskowych. Zobacz tutaj zarysu jak owinąć detektor z własnej klasy:

Mobile Vision API - concatenate new detector object to continue frame processing

Można by wdrożyć metodę „wykrywania” do podjęcia ramkę otrzymane od aparatu, Tworzenie przyciętej wersji ramy i przekazać to do odpowiedniego detektora.

+0

Czy Google Mobile Vision API jest bezpłatny? Potrzebuję go użyć do wykrywania twarzy. Nie ma informacji o cenach ani bezpośredniego sposobu kontaktowania się z pomocą techniczną na stronie. – techno

+0

Tak, jest za darmo. – pm0733464

+0

Dzięki za aktualizację w tej sprawie. Śmierdzi, że nie ma bezpośredniej implementacji, do której można się przyzwyczaić, ale skorzystałem z waszej porady i posiadałem działającą wersję przyciętego obszaru skanowania. Mam też dwie wersje - prawdziwy rzut mapy bitowej, która zostanie wysłana do klienta wykrywającego, i proste: "Czy Rect X zawiera wierzchołek wyniku skanowania Rect Y?" w wywołaniu zwrotnym przykładowej fabryki graficznej. –