1

Java からシェル コマンドを実行するつもりですが、コマンドの実行中に引数を出力ストリームに渡す必要があります。

以下はシェルコマンドです

./darknet detect cfg/yolo-voc.2.0.cfg backup/yolo-voc_20000.weights

このコマンドを実行すると、端末の画像ファイルのパスが生成されます。次のように画像のパスを指定できます

Loading weights from backup/yolo-voc_21000.weights...Done!
Enter Image Path:

端末から実行するとき、そこにパスを提供できます。

私はJavaプロセスでこのコマンドを実行することができました。また、コマンドで画像URIを提供すると、出力を得ることができます。ここにコードがあります

     public static void execCommand(String command) {
    try {

        Process proc = Runtime.getRuntime().exec(command);
        // Read the output
        BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));

        String line = "";
         //reader.readLine();
        while ((line = reader.readLine()) != null) {
            System.out.print(line + "\n");
            s.add(line);
        }
//            proc.waitFor();
    } catch (IOException e) {
        System.out.println("exception thrown: " + e.getMessage());
    } 
}

しかし、私が欲しいのは、コマンドの実行の開始ではなく、実行時に画像パスを提供することです..以下のように出力ストリームに書き込もうとしましたが、まだ運がありません

public static void execCommand(String command) {
    try {
        Process proc = Runtime.getRuntime().exec(command);
        // Read the output
        BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));

        String line = "";
                    BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(proc.getOutputStream()));
             writer.append("data/test2.jpg");
          writer.newLine();
         //reader.readLine();
        while ((line = reader.readLine()) != null) {
            System.out.print(line + "\n");
            s.add(line);
        }
//            proc.waitFor();
    } catch (IOException e) {
        System.out.println("exception thrown: " + e.getMessage());
    } 
}
4

1 に答える 1