que tiene la situación que tengo una pequeña imagen binaria que tiene una forma, en torno al cual quiero encontrar la mejor rectángulo girado apropiado (no rectángulo que bordea). Sé que hay cv :: minAreaRect() que aplica en el resultado encontrado por cv :: findContours(), pero esto ha dado resultados pobres en mi caso, porque los datos son ruidosos (viniendo de MS Kinect , vea la imagen de ejemplo donde la rotación cambia debido a que los datos de entrada (contorno) son ligeramente diferentes). Lo que hice en cambio fue calcular el eje principal utilizando PCA en mi imagen binaria (que es menos sensible al ruido), lo que da el ángulo "a", y ahora quiero crear un
RotatedRect
alrededor de mi forma, dado el ángulo del principal eje, a).OpenCV RotatedRect con ángulo especificado
que tienen una ilustración, hecha con mis conocimientos de pintura excelentes!
Entonces, mi pregunta es: ¿tienen fragmentos de código o sugerencias concretas para resolver esto? Me temo que tengo que hacer muchas iteraciones de Bresenham, con la esperanza de que haya un enfoque inteligente.
Por cierto, para aquellos que no están demasiado familiarizados con la estructura de datos RotatedRect de openCV: se define por altura, ancho, ángulo y punto central, suponiendo que el punto central está, bueno, en el centro del rectángulo .
¡Salud!
¿No rotarías la forma con a, y luego ajustaría el rectángulo? –
Girar no es una opción. No se puede suponer que la forma está realmente en el centro de la imagen. También podría estar en la esquina inferior izquierda. Mi idea actual de resolver este problema es hacer Bresenham transversal, tal vez lo suficientemente inteligente como para no escanear las áreas que ya sé que se han escaneado, tratando de maximizar el ancho y la altura de la rect girada. –
NameZero912
¿Qué quiere decir con "esto ha dado malos resultados"? ¿Puedes compartir una imagen de muestra con la que estás trabajando? – fireant