Pyboof: Как использовать оболочки Python в Java? - PullRequest
0 голосов
/ 01 октября 2018

Я скачал pyboof, которые являются оболочками Python в Java.Итак, мой вопрос, как именно я могу их использовать?Я написал простую программу, которая открывает командную оболочку и запускает оболочку оттуда.Моя программа выше:

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");


        }
  }  

Но когда я запускаю, ничего не происходит.Я пытаюсь запустить py-файл «blur_image» в оболочке python, но он просто открывает файл, пока я хочу посмотреть, как изменилась картинка (новая картинка).Итак, это неправильный способ использования оболочек Python или мне нужно сделать что-то еще, чтобы использовать оболочки?Обертку blur_image можно найти здесь https://github.com/lessthanoptimal/PyBoof/blob/master/examples/blur_image.py.

1 Ответ

0 голосов
/ 01 октября 2018

Скрипт для запуска python из Java может выглядеть следующим образом:

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 - это оболочка Python для библиотеки компьютерного зрения BoofCV (в противоположном направлении от Python для вызова Java), как написано на ее странице GitHub, и вы можете использовать библиотеку BoofCV непосредственно из Java.

...