我下载了pyboof,它们是java中的python包装器。所以,我的问题是我到底该如何使用它们?我编写了一个简单的程序,该程序打开命令外壳并从那里运行包装程序。我的程序是上面的:
package alltestshere;
import java.awt.image.BufferedImage;
import java.io.* ;
import boofcv.io.UtilIO;
import boofcv.io.image.UtilImageIO;
public class PythonCaller {
public static void main (String [] args) throws IOException {
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("cmd set PATH = C:\\Python27");
Process pr2 = rt.exec("cmd python27 C:\\Users\\Caterina\\Downloads\\PyBoof-master\\PyBoof-master\\examples\\blur_image.py");
Process pr3 = rt.exec("cmd blur_image.py");
}
}
但是当我运行它时,什么也没有发生。我也尝试在python shell中运行“ blur_image” py文件,但是当我想查看图片的变化(新图片)时,它只是打开了文件。那么,这是使用python包装器的错误方法吗?还是我需要做更多的事情才能使用包装器?可以在https://github.com/lessthanoptimal/PyBoof/blob/master/examples/blur_image.py上找到blur_image包装器。
答案 0 :(得分:0)
从Java运行python的脚本如下所示:
String script = "C:\\Users\\Caterina\\Downloads\\PyBoof-master\\PyBoof-master\\examples\\blur_image.py";
String python_app = "python27"
Process pr = rt.exec(new String[]{python_app, script})
进程运行后,您需要等待以下操作完成:
pr.waitFor()
如果期望脚本将写入一些输出或读取一些输入,则应 读取输出并为其输入写一些东西。
以下示例将一些内容写入子进程的输入流:
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(p.getOutputStream()));
writer.write("something");
writer.newLine();
writer.close();
不过,PyBoof
是计算机视觉库BoofCV
(从Python到Java的相反方向)的 Python 包装器,它是在GitHub页面上编写的,您可以直接从Java使用BoofCV库。