[EDITADO] Veja como é feito.
Etapas: 1. Isole a peça do divisor de estrada.
Em seguida, usando as linhas de acesso, descubra as linhas mais longas na imagem. Descubra os pontos extremos que cruzam o limite da imagem. Você conseguiu os pontos Quadilaterais. Eu pulei esta parte escolhendo-os manualmente. No meu caso, a largura da estrada na parte superior da imagem é 10 e na parte inferior é 60.
Agora, para o Destino, precisamos criar uma imagem para que o Divisor Quadilateral tenha largura uniforme de 60, para salvar em outra matriz novos pontos, que têm os mesmos pontos inferiores, mas os pontos superiores são modificados à medida que formam um retângulo com a mesma altura da imagem. (ou maior, você pode ajustar como preferir depois de executá-lo e ver os resultados), mas com a largura 60. Lembre-se de que estamos transformando nossa imagem para que o divisor se encaixe nessa área retangular. A imagem mudará automaticamente.
Agora, usando
Mat TransformMat = getPerspectiveTransform(ipPts, opPts);
de opencv em pontos quadrilaterais iniciais e de destino, obtemos uma matriz de transformação, que aplicamos à nossa imagem de teste.
warpPerspective(ipImg, opImg, TransformMat, ipImg.size());
Você verá muita área cortada para ajustar a saída no tamanho da imagem de entrada. No entanto, você notará que a imagem é transformada para obter um divisor paralelo, como esperávamos. Ao realizar algumas traduções e outras coisas e obter uma imagem de tamanho maior, você obterá isso. Nunca podemos obter uma imagem de saída perfeitamente acondicionada, pois seu tamanho pode ser muito grande. Mas alcançaremos algumas restrições que cumprirão nossa tarefa. Aqui está a última imagem: