Pyboof:如何在Java中使用python包装器?

时间:2018-10-01 15:53:24

标签: java python wrapper

我下载了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包装器。

1 个答案:

答案 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库。