Estoy un poco perdido en los documentos de OpenCV, me gustaría guardar CvSeq devuelto por cvFindContours a una matriz, por lo que entiendo que devolverá una secuencia de CvContour s pero no pude encontrar lo que contiene? ¿Qué partes de él debería guardar para más tarde? Puedo más tarde puedo iterar a través de él y decir call cvBoundingRect etc.Guardar CvSeq en una matriz
Respuesta
Un CvContour es una estructura con los mismos campos que un CvSeq, más algunos otros, el más importante de que es un rectificador CvRect (vea include/opencv/cxtypes.h). Entonces realmente se reduce a lo que es un CvSeq.
Hay un archivo llamado opencv.pdf que viene con las fuentes OpenCV, y en la p. 138 (para OpenCV 2.1) se dice que CvSeq se define como sigue:
#define CV_SEQUENCE\_FIELDS()
int flags; /* micsellaneous flags */ \
int header_size; /* size of sequence header */ \
struct CvSeq* h_prev; /* previous sequence */ \
struct CvSeq* h_next; /* next sequence */ \
struct CvSeq* v_prev; /* 2nd previous sequence */ \
struct CvSeq* v_next; /* 2nd next sequence */ \
int total; /* total number of elements */ \
int elem_size;/* size of sequence element in bytes */ \
char* block_max;/* maximal bound of the last block */ \
char* ptr; /* current write pointer */ \
int delta_elems; /* how many elements allocated when the sequence grows
(sequence granularity) */ \
CvMemStorage* storage; /* where the seq is stored */ \
CvSeqBlock* free_blocks; /* free blocks list */ \
CvSeqBlock* first; /* pointer to the first sequence block */
typedef struct CvSeq
{
CV_SEQUENCE_FIELDS()
} CvSeq;
Digamos que se llama cvFindContours así:
cvFindContours(img, storage, &contours, sizeof(CvContour), CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0));
, donde contours
estará apuntando al primer contorno después de llamar cvFindContours
. Si desea obtener su rectángulo delimitador, simplemente páselo al cvBoundingRect
. Se puede acceder al siguiente contorno de la secuencia a través del contours->h_next
. En el caso de los árboles de contorno, es decir, cuando un contorno puede estar dentro de otro contorno en la imagen, puede acceder al primer contorno interno del contorno actual a través del contours->v_next
. El siguiente contorno interno, si existe, sería contours->v_next->h_next
, y así sucesivamente.
Si desea convertir una secuencia en una matriz, puede usar cvCvtSeqToArray
.
También puede utilizar la interfaz C++ a partir de OpenCV 2.0 que parece ser más agradable de usar. Por ejemplo, el parámetro CvSeq** contours
a cvFindContours
se convierte en vector<vector<Point> >& contours
.
- 1. ¿Cómo se elimina un cvseq en OpenCV?
- 2. guardar una matriz activa registros
- 3. ¿Puedes guardar una matriz PHP en Memcache?
- 4. Android guardar una matriz de objetos personalizados
- 5. Guardar matriz como xml
- 6. ¿Cómo puedo guardar una matriz dinámica en FileStream en Delphi?
- 7. Guardar una propiedad de matriz en un esquema Mangosta
- 8. ¿Cómo guardar una lista como matriz numpy en python?
- 9. Guardar y cargar una matriz Numpy en python
- 10. guardar y restaurar una matriz de objetos personalizados
- 11. Una manera eficiente de guardar una matriz y sus claves en una base de datos
- 12. Guardar matriz en la base de datos mysql
- 13. Guardar una subtrama en matplotlib
- 14. ¿Cómo dividir cadena y guardar en una matriz en T-SQL
- 15. Serializar y deserializar una matriz en javascript
- 16. ¿Cómo puedo guardar una matriz escasa de MATLAB muy grande en un archivo de texto?
- 17. cuál es la forma recomendada de guardar una matriz M por N en la tabla sql
- 18. Python/Numpy - Guardar matriz con columna y títulos de fila
- 19. convertir y guardar matriz de distancia a un formato específico
- 20. indexando una matriz en R
- 21. Convertir una matriz 1D en una matriz 2D en numpy
- 22. Transformar una matriz 3D en una matriz en R
- 23. C# datagridview columna en una matriz
- 24. Guardar NSMutableArray en el disco
- 25. Guardar configuración en una aplicación .NET WinForms
- 26. Guardar archivo cargado en una ubicación específica
- 27. Guardar UIImage, cargarlo en una orientación incorrecta
- 28. Guardar como una imagen png en Android
- 29. HtmlAgility - Guardar el análisis en una cadena
- 30. R: guardar ggplot2 gráficas en una lista