¿Las funciones HoughLines o HoughLinesP en OpenCV devuelven la lista de líneas en orden de acumulación como lo hace la función HoughCircles? Me gustaría saber el orden de las líneas. También sería muy útil obtener el valor del acumulador para las líneas, de modo que se pueda utilizar un umbral inteligente y adaptativo en lugar de uno fijo. ¿Están disponibles el valor de orden o del acumulador sin rewriting OpenCV myself?Líneas más fuertes de OpenCV Hough
Respuesta
HoughTransform ordena las líneas que descienden por número de votos. Puede ver el código here
Sin embargo, el conteo de votos se pierde a medida que la función retorna - la única forma de tenerlo es modificar OpenCV.
La buena noticia es que no es muy complicado, lo hice yo mismo una vez. Es un tiempo de minutos para cambiar la salida de vector<Vec2f>
a vector<Vec3f>
y completar el último parámetro con el conteo de votos.
Además, hay que modificar CvLinePolar para añadir el tercer parámetro - Hough se implementa en C
, y no es un envoltorio sobre ella en C++
, así que hay que modificar tanto la implementación y la envoltura.
El código principal para modificar es aquí
for(i = 0; i < linesMax; i++)
{
CvLinePolar line;
int idx = sort_buf[i];
int n = cvFloor(idx*scale) - 1;
int r = idx - (n+1)*(numrho+2) - 1;
line.rho = (r - (numrho - 1)*0.5f) * rho;
line.angle = n * theta;
// add this line, and a field voteCount to CvLinePolar
// DO NOT FORGET TO MODIFY THE C++ WRAPPER
line.voteCount = accum[idx];
cvSeqPush(lines, &line);
}
Gracias por dejar eso en claro y señalarme el código. Estoy usando la versión probabilística y revisando el código, sería bueno sacar también linesMax para acelerar las cosas. – zzzz
El Probabilistic está en el mismo archivo, creo que ya lo encontraste. El enfoque diferente en la búsqueda de línea significa que el conteo de votos no es tan relevante como en el clásico H. Siempre que una línea tenga los votos mínimos requeridos, se inserta en la cola de resultados. No se realiza ninguna clasificación. – Sam
Hola, Perdón por actualizar este hilo, pero ¿tienes alguna idea de cómo obtener el valor del acumulador en la transformación probalística de Hough? No estoy seguro de en qué parte de la matriz del acumulador están los votos de la línea. – Aeefire
- 1. Cómo probar la proximidad de líneas (transformada Hough) en OpenCV
- 2. OpenCV: ¿obtiene el valor del acumulador Hough?
- 3. Líneas prominentes no detectadas por Hough Transform
- 4. Transformación de Hough para detección de iris en OpenCV
- 5. Clasificando líneas con opencv
- 6. OpenCV: Usando Hough Circle Transformation para detectar iris
- 7. Explique Hough Transformation
- 8. Hough Transform con PHP
- 9. OpenCV detectar esquinas
- 10. OpenCV Identificación de líneas y curvas
- 11. Detectando Círculos Hough
- 12. Hough Transform para buscar segmentos de curva
- 13. transformada de Hough Ecuación
- 14. Diseñar y parámetros fuertes
- 15. Less.js - reglas anidadas fuertes?
- 16. ¿Cuál es la implementación particular de Probabilistic Hough Transform en OpenCV?
- 17. Detección de logotipos usando OpenCV
- 18. Dibujando un conjunto fijo de líneas de cuadrícula con opencv
- 19. Buscar vecinos más cercanos - OpenCV
- 20. Detección de rectángulo con transformada Hough
- 21. ¿Cómo implementar Hough Transform?
- 22. llenado del acumulador para la transformada Hough
- 23. Transformada de Hough en MATLAB sin usar la función de hough
- 24. Usos tanto para lenguajes fuertes estáticos como Haskell como para lenguajes dinámicos (fuertes) como Common LIsp
- 25. Transformación Hough vs Detección de contorno para reconocimiento de rectángulo con proyección de perspectiva
- 26. Detección de línea horizontal con OpenCV
- 27. Detección de elipse usando Hough Transform
- 28. ¿Puedo usar Ninject ConstructorArguments con nombres fuertes?
- 29. iOS ARC - propiedades débiles y fuertes
- 30. ¿Por qué usar ensamblajes con nombres fuertes?
buena. Siempre asumí que las líneas se daban en orden. Y esta suposición hasta ahora ha sido consistente con mis resultados ... Sin embargo, sería bueno estar seguro. –