Ho un set di punti immagine (coordinate) di tipo point2f openCV. Voglio trovare i 4 vicini più vicini di ogni punto di quel set. Esiste qualche funzione build-in specifica in openCV per fare questo o devo misurare la distanza tra ogni punto e decidere i quattro più vicini?Trova i vicini più vicini - OpenCV
risposta
È possibile utilizzare il classificatore k Nearest Neighbor più prossimo CvKNearest
. Dopo aver addestrato il classificatore con tutti i punti, è possibile ottenere i vicini più vicini k
chiamando la funzione CvKNearest::find_nearest
.
This tutorial potrebbe essere utile.
Si offre un esempio di formazione (per quanto ne so sia utilizzando il costruttore KNearest
o train()
metodo, verificare il documentation) e rilevazione delle componenti (utilizzando, come menzionato @sietschie find_nearest()
metodo).
find_nearest()
assume un valore int k
rappresenta la quantità necessaria di vicini su cui si basa la classificazione, etichette k vicini potrebbero essere opzionalmente restituite tramite il parametro neighborResponses
, così come indicato nella find_nearest()
documentazione collegata in precedenza:
neighborResponses - Valori di output opzionali per i corrispondenti vicini.
in cui, ancora una volta come parte della documentazione, neighbors
sono:
vicini - puntatori uscita opzionali al prossimo vettori stessi.
Non ho sperimentato con questi parametri, tuttavia fornito ho capito bene, vicini offrono valori effettivi dei vicini, mentre neighborResponses offre loro etichette.
Il seguente codice aiuterà a trovare i vicini più vicini di un punto selezionato da una serie di punti.
vector<Point2f> pointsForSearch; //Insert all 2D points to this vector
flann::KDTreeIndexParams indexParams;
flann::Index kdtree(Mat(pointsForSearch).reshape(1), indexParams);
vector<float> query;
query.push_back(pnt.x); //Insert the 2D point we need to find neighbours to the query
query.push_back(pnt.y); //Insert the 2D point we need to find neighbours to the query
vector<int> indices;
vector<float> dists;
kdtree.radiusSearch(query, indices, dists, range, numOfPoints);
indici dà gli indici di vicini e dists selezionati dà le distanze per i vicini selezionati.
Ecco piccolo esempio come trovare 3 punti più vicini alla struttura (370.464):
#include "opencv2/flann/miniflann.hpp"
flann::KDTreeIndexParams indexParams;
flann::Index kdtree(Mat(cloud2d).reshape(1), indexParams);
vector<float> query;
query.push_back(370);
query.push_back(464);
vector<int> indices;
vector<float> dists;
kdtree.knnSearch(query, indices, dists, 3);
// cloud2d[indices[0]] -- is your first point now
// cloud2d[indices[1]] and cloud2d[indices[2]] -- is your 2nd and 3rd point
Si prega di notare che la funzione si comporta folle se alcuni punti hanno coordinate NAN, questo può essere il caso se si divide da 0.0 da qualche parte prima.
Come si installa cloud2d. Ho uno std :: vector
try vector
- 1. Trova tutti i vicini più vicini entro una distanza specifica
- 2. PostGis vicini più vicini query
- 3. Geohashing - Trova in modo ricorsivo i vicini dei vicini
- 4. Supporto Vector Machine vs K Vicini vicini più vicini
- 5. Vicini più vicini che utilizzano Quaternions
- 6. Come visualizzare i vicini più vicini in R?
- 7. OpenCV C++/Obj-C: connette contorni vicini
- 8. Trova n Vicini più vicini per un determinato punto utilizzando PostGIS?
- 9. Trovare i vicini più vicini di K e la sua implementazione
- 10. Come posso risolvere la seguente mancata corrispondenza delle dimensioni con i vicini più vicini di K?
- 11. Come calcolare i vicini più vicini usando weka dalla riga di comando?
- 12. Come posso estendere questa query SQL per trovare i k vicini più vicini?
- 13. Punti più vicini di due poligoni
- 14. jquery genitori/più vicini non funzionanti
- 15. WebRTC: corrispondenza tra pari più vicini
- 16. Il modo più efficace per trovare i vicini nell'elenco
- 17. Come determinare quali rapporti sono più vicini
- 18. Trovare i vicini in un array bidimensionale
- 19. come calcolare i nodi "vicini" con networkx
- 20. Trova luoghi più vicini su Google Maps, usando i dati spaziali MySQL
- 21. Come trovare i k vicini più vicini alla mediana di n numeri distinti nel tempo O (n)?
- 22. differenza Numpy tra elementi vicini
- 23. Trova i nomi dei colori per i colori vicini alla tavolozza di ColorBrewer
- 24. Trova in modo efficiente gli indici dei punti più vicini sulla griglia 2D non rettangolare
- 25. Determinazione dei vicini della cella elenco bidimensionale
- 26. Trova indici di 5 campioni più vicini nella matrice di distanza
- 27. Ricerca di k numeri più vicini ad un dato numero
- 28. Visualizzare solo gli elementi della lista più vicini
- 29. Return Index dei valori più vicini in una matrice
- 30. Come trovare i valori più vicini in una serie di Pandas a un numero di input?
L'URL richiesto/2010/10/k-neighbor-neighbors-in-opencv/non è stato trovato su questo server. –
Grazie @ JürgenK .; il blog sembra essere stato rinnovato - ho aggiornato l'url. –
ottengo un timeout su richiesta della documentazione –