我已经下载了pyboof,这是用java编写的python包装器。所以,我的问题是,我到底该如何使用它们?我编写了一个简单的程序,可以打开命令shell并从那里运行包装器。我的程序是上面的:
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包装器。
发布于 2018-10-02 01:09:38
从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()
如果期望脚本会写一些输出或读取一些输入,你应该读取输出并为它的输入写一些东西。
下面的示例将一些内容写入subprocess的输入流:
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(p.getOutputStream()));
writer.write("something");
writer.newLine();
writer.close();
然而,PyBoof
是计算机视觉库BoofCV
(相反方向,从Python到调用Java)的包装器,因为它是在它的GitHub页面上编写的,您可以直接从Java使用BoofCV库。
https://stackoverflow.com/questions/52594738
复制相似问题