Ho una funzione Python che restituisce un array numpy multidimensionale. Voglio chiamare questa funzione Python da Lua e ottenere i dati in un Tensore Torcia Lua il più rapidamente possibile. Ho una soluzione che funziona abbastanza lentamente e sto cercando un modo che sia significativamente più veloce (ordine di 10 fps o più). Non sono sicuro che sia possibile.Come convertire rapidamente un array numerico Python-in-Lua restituito in un Tensore della torcia Lua?
Credo che questo sarà utile per gli altri considerando la crescente popolarità di Facebook e Torch e gli estesi strumenti di elaborazione delle immagini di Python di cui Lua è privo.
Sto usando il fork di Bastibe di lunatic-python per chiamare una funzione Python di Lua. Con l'aiuto di questo precedente question e questo documentation, ho trovato un codice che funziona, ma è troppo lento. Sto usando Lua 5.1 e Python 2.7.6 e posso aggiornarli se necessario.
Lua Codice: "test_lua.lua"
require 'torch'
print(package.loadlib("libpython2.7.so", "*"))
require("lua-python")
getImage = python.import "test_python".getImage
pb = python.builtins()
function getImageTensor(pythonImageHandle,width,height)
imageTensor = torch.Tensor(3,height,width)
image_0 = python.asindx(pythonImageHandle(height,width))
for i=0,height-1 do
image_1 = python.asindx(image_0[i])
for j=0,width-1 do
image_2 = python.asindx(image_1[j])
for k=0,2 do
-- Tensor indices begin at 1
-- User python inbuilt to-int function to return integer
imageTensor[k+1][i+1][j+1] = pb.int(image_2[k])/255
end
end
end
return imageTensor
end
a = getImageTensor(getImage,600,400)
Python Codice: "test_python.py"
import numpy
import os,sys
import Image
def getImage(width, height):
return numpy.asarray(Image.open("image.jpg"))
Grazie :) Non ho ancora trovato questo. Stavo cercando un modo per eseguire Python in Lua, visto che stavo lavorando con una grande quantità di codice Lua e avevo solo bisogno di una piccola quantità di Python. Ho dato [link] (https://github.com/facebook/fblualib/blob/master/fblualib/python/README.md) una prova anche però ho avuto bisogno di eseguire con qlua piuttosto che luajit in modo che potessi lavorare con display finestre. –