get pdiffer trabalhando no Ubuntu

0

Estou tentando usar o pdiffer no Ubuntu. É uma interface python para a ferramenta PerceptualDiff. link

Eu instalei o pdiffer usando pip (após instalar o pip)
eu instalei cmake
instalei o freeimage (sudo apt-get install libfreeimage-dev)
eu construí PerceptualDiff seguindo o arquivo leia-me.

Até onde eu sei, tudo é configurado (não houve erros). Em Home / Documents eu tenho minhas duas imagens e uma pasta chamada pdiff que tem o arquivo perceptualdiff compilado nele.

Eu usei o interpretador python em uma janela de terminal

de pdiffer import PDiffer

pdiff = PDiffer(bin='/home/username/Documents/pdiff/perceptualdiff')
result = pdiff('image1.png', 'image2.png')

sem erros até o último comando

Traceback (última chamada mais recente):

File "<stdin>", line 1, in <module>
TypeError: 'PDiffer' object is not callable

Esta é a primeira vez que eu tentei usar uma interface python para um módulo C. Se você pudesse me dizer o que estou fazendo de errado (ou deixe-me saber que outras informações eu preciso incluir), eu agradeceria.

    
por ubuntu-steve 05.10.2014 / 06:22

1 resposta

0

A documentação não tem uma explicação básica.

Vamos dar uma olhada primeiro no seu erro. Você cria uma instância da classe PDiffer e depois tenta chamar essa instância novamente. Veja este exemplo muito simplificado com o mesmo erro:

>>> class PDiffer:
...   def __init__(self, *args, **kwargs):
...     pass
... 
>>> pdiff = PDiffer(bin="/path/to/bin")
>>> pdiff("image1.png", "image2.png")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'PDiffer' object is not callable

Dito isto, a documentação fornece duas opções para usar o pdiff. Crie uma instância de PDiff e atribua a ela um caminho personalizado para o binário ou use a função auxiliar pdiff . Dar a eles o mesmo nome de variável e usá-los no mesmo bloco de código é muito confuso. É um ou o outro.

Eu tive que olhar a fonte para ver o que está acontecendo. Você deve usar o método pdiff da classe PDiff . O segundo exemplo é um atalho para este método com o caminho binário personalizado.

Então, um exemplo prático seria:

from pdiffer import PDiffer
pdiff = PDiffer(bin='/home/username/Documents/pdiff/perceptualdiff')
result = pdiff.pdiff('image1.png', 'image2.png')
    
por Timo 05.10.2014 / 11:54