[EDITADO] Así es como se hace.
Pasos: 1. Aislar la parte del divisor de carreteras.
Luego, usando Houghlines, encuentre las líneas más largas en Image. Descubra los puntos extremos que cruzan el límite de la imagen. Tienes los puntos cuadilaterales. Me salté esta parte al elegirlos manualmente. En mi caso, el ancho del camino en la parte superior de la imagen es 10, y en la parte inferior es 60.
Ahora, para el Destino, tenemos que Image para que Divider Quadilateral tenga un ancho uniforme de 60, por lo que guardamos en otra matriz nuevos puntos, que tienen los mismos puntos inferiores, pero los puntos superiores se modifican ya que forman un rectángulo con una altura igual a la imagen (o más grande, puede ajustarlo según le convenga después de ejecutarlo una vez y ver los resultados), pero ancho 60. Recuerde, estamos transformando nuestra imagen de manera que el divisor encaje en esta Área Rectangular. La imagen cambiará automáticamente.
Ahora, usando
Mat TransformMat = getPerspectiveTransform(ipPts, opPts);
de opencv en los puntos cuadráticos iniciales y de destino, obtenemos una matriz de transformación, que aplicamos a nuestra imagen de prueba.
warpPerspective(ipImg, opImg, TransformMat, ipImg.size());
Verá que se recorta una gran cantidad de área para que se ajuste a la salida en Tamaño de imagen de entrada. Sin embargo, notará que la imagen se transforma para obtener un divisor paralelo, como esperábamos. Al realizar algunas traducciones y cosas, y tomar una imagen de salida de mayor tamaño, obtendrá esto. Nunca podemos obtener una imagen de salida perfectamente envuelta, ya que su tamaño puede ser muy grande. Pero llegaremos a alguna restricción que cumplirá nuestra tarea. Aquí está la última imagen: