Ich habe eine Python-Funktion, die ein mehrdimensionales numpy Array zurückgibt. Ich möchte diese Python-Funktion von Lua aufrufen und die Daten so schnell wie möglich in einen Lua Torch Tensor bringen. Ich habe eine Lösung, die ziemlich langsam arbeitet und nach einem Weg sucht, der wesentlich schneller ist (Ordnung von 10fps oder mehr). Ich bin mir nicht sicher, ob das möglich ist.Wie konvertiert man ein zurückgegebenes Python-in-Lua-Array in einen Lua Torch Tensor?
Ich glaube, dass dies für andere von Nutzen sein wird, wenn man die wachsende Popularität der von Facebook unterstützten Torch und die umfangreichen, einfach zu bedienenden Bildverarbeitungswerkzeuge in Python berücksichtigt, von denen Lua nichts hat.
Ich benutze die Bastibe-Verzweigung von lunatic-python, um eine Python-Funktion von Lua aufzurufen. Mit Hilfe von diesem vorherigen question und diesem documentation, habe ich einen Code, der funktioniert, aber viel zu langsam ist. Ich verwende Lua 5.1 und Python 2.7.6 und kann diese bei Bedarf aktualisieren.
Lua-Code: "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-Code: "test_python.py"
import numpy
import os,sys
import Image
def getImage(width, height):
return numpy.asarray(Image.open("image.jpg"))
Vielen Dank :) Habe noch nicht über diese noch. Ich suchte nach einer Möglichkeit, Python in Lua auszuführen, da ich mit einer großen Menge Lua-Code arbeitete und nur eine kleine Menge Python benötigte. Ich gab [link] (https://github.com/facebook/fblualib/blob/master/fblualib/python/README.md) einen Versuch auch, aber ich musste mit qlua statt luajit laufen, damit ich mit Display arbeiten konnte Fenster. –