7

Voglio sviluppare un'app che riconosca l'oggetto (come monumento o qualcosa) presente davanti alla telecamera usando OpenCv e poi mostrerà le informazioni su di esso.OpenCV per immagine ANDROID confrontare

Quindi la domanda è come riconoscere oggetto (come monumento o qualcosa del genere) forma o confrontare le immagini con OpenCV?
E qual è il metodo migliore per farlo?

Sarebbe bello se ci fosse una sorta di campioni o tutorial per il rilevamento e il confronto degli oggetti.

Grazie.

+1

Quali algoritmi di rilevamento oggetto hai guardato? Per prima cosa devi decidere il più appropriato per la tua applicazione. A seconda dell'algoritmo, potrebbe essere necessario utilizzare i dati di allenamento per aiutare a definire un modello che descriva al meglio l'oggetto che si desidera rilevare. La visione artificiale è un'area molto difficile su cui lavorare e richiede una buona comprensione dell'area. Se sei nuovo, ti consiglio di procurarti dei libri di testo. – BDFun

risposta

6

Il metodo migliore per ciò che chiedete è utilizzare rivelatori di caratteristiche locali come SIFT, SURF e ORB di OpenCV, ad esempio.

È necessario almeno un'immagine dall'oggetto che si desidera rilevare. Successivamente, tali algoritmi possono confrontare quell'immagine con altre immagini per vedere se sono abbastanza simili.

Ecco la documentazione per gli algoritmi.

  • ORB e altri:

http://docs.opencv.org/modules/features2d/doc/feature_detection_and_description.html

  • SURF e SIFT ('nonfree'):

http://docs.opencv.org/modules/nonfree/doc/feature_detection.html

Il modo in cui questi algoritmi funzionano per quel compito è di sel zionare punti interessanti per ogni immagine e confrontarli per vedere se corrispondono. Se vengono trovate più corrispondenze, è più probabile che le immagini abbiano lo stesso oggetto.

Tutorial (da Feature Detection e sotto):

http://docs.opencv.org/doc/tutorials/features2d/table_of_content_features2d/table_of_content_features2d.html

È inoltre possibile trovare campioni C++ relativi a questo argomento qui (i campioni sono anche all'interno di package OpenCV download):

  • es. "matching_to_many_images.cpp"
  • "video_homography.campioni cpp"

http://code.opencv.org/projects/opencv/repository/revisions/master/show/samples/cpp

E Android Java qui (non collegati, ma anche utile):

http://code.opencv.org/projects/opencv/repository/revisions/master/show/samples/android

O campioni Python che in realtà sono quelli più aggiornati per questo argomento (al momento in cui questo post è stato scritto):

http://code.opencv.org/projects/opencv/repository/revisions/master/show/samples/python2

Come nota finale, come @BDFun ha detto nel commento, questo non è banale da fare.

Altro - se si desidera una panoramica del rilevamento e descrizione di OpenCV Feature, check this post.

+0

come usare opencv + android? Con Android NDK? – nawara

+0

Hai controllato questo? http://docs.opencv.org/doc/tutorials/introduction/android_binary_package/dev_with_OCV_on_Android.html#native-c –