Preciso realizar uma operação de perspectiva de imagem na linha de comando?
Existe algum lugar onde a documentação é fornecida adequadamente. Eu fiz esta pergunta sobre estouro de pilha, você pode verificaraqui.
Se houver qualquer outra ferramenta disponível que forneça interface de linha de comando para fazer a mesma coisa, também será bom para mim.
Responder1
Provavelmente a melhor ferramenta para manipular imagens seria o ImageMagick. Se você der uma olhada na documentação, há muitos exemplos que mostram como usar o -distort
recurso que acredito ser o que você está procurando.
Exemplo
Antes Depois
Linha de comando para realizar a conversão:
$ convert checks.png -filter point
-virtual-pixel tile -mattecolor DodgerBlue
-distort Perspective '0,0 20,60 90,0 70,63 0,90 5,83 90,90 85,88'
horizon_tile_point.png
Existem 2 outros métodos para fazer a amostragem para obter uma melhor aparência da imagem resultante. Especificamente "Grid Super Sampling" e "Elliptical Weighted Area (EWA) Resampling". Este último é o padrão.
Como faço para calcular as coordenadas?
Existem 2 recursos para entender como gerar a série de coordenadas para convert
. O primeiro é o que dei acima. A segunda é esta SO Q&A intitulada:Compreendendo a distorção da projeção em perspectiva ImageMagick, especificamenteResposta de @KurtPfeifle.
As coordenadas são as seguintes:
Sx1,Sy1 Dx1,Dy1 Sx2,Sy2 Dx2,Dy2 Sx3,Sy3 Dx3,Dy3 ... Sxn,Syn Dxn,Dyn
- x é usado para representar uma coordenada X.
- y é usado para representar uma coordenada Y.
- 1, 2, 3, ... n é usado para representar o 1º, 2º, 3º, ... enésimo pixel.
- S é usado aqui para o pixel de origem.
- D é usado aqui para o pixel de destino.