Запустите Bash из Java-программы для захвата изображения с веб-камеры на Raspberry Pi

На моем Raspberry Pi я могу успешно захватывать и сохранять изображения с моей USB-камеры Logitech Pro 9000 из LXTerminal с помощью следующей строки bash:

fswebcam -d /dev/video0 /home/pi/image.jpg

Я хочу написать java-программу, которая запускает приведенную выше строку bash, потому что это самый простой способ захвата и сохранения изображения. Пока что у меня есть:

import java.io.*;

public class GrabNSave {
  public static void main(String[] args) throws IOException {
  Runtime.getRuntime().exec("/bin/bash -c fswebcam -d /dev/video0 /home/pi/image.jpg");
  }
}

Это не работает. Я не получаю сообщений об ошибках. Пожалуйста помоги!


person Aí Phi Nguyễn    schedule 20.04.2013    source источник


Ответы (3)


Во-первых, вам нужно установить fswebcam....

sudo apt-get install fswebcam

Затем в вашей Java-программе вам нужно запустить следующее:

Runtime.getRuntime().exec("fswebcam -d /dev/video0 /home/username/Desktop/test.jpg");

Сработало для меня, надеюсь, это сработает для вас! знак равно

Кстати, сначала у меня была такая же проблема.. =)

Good luck!
person Aaron Esau    schedule 10.08.2014

/bin/bash -c fswebcam -d /dev/video0 /home/pi/image.jpg в bash тоже не сработает, нужно добавить кавычки, чтобы bash принимал команду как один аргумент:

 /bin/bash -c 'fswebcam -d /dev/video0 /home/pi/image.jpg'

Но я бы рекомендовал использовать более простую версию:

 Runtime.getRuntime().exec("fswebcam -d /dev/video0 /home/pi/image.jpg")

или если вам нужно изменить аргументы что-то среди строк:

 String[] command = {"fswebcam", "-d", "/dev/video0", "/home/pi/image.jpg"}
 Runtime.getRuntime().exec(command)
person Nicolas Cortot    schedule 21.04.2013
comment
Спасибо за предложения. Я пробовал все вышеперечисленное, и это все еще не работает. Программа компилируется, но при запуске ничего не происходит. знак равно - person Aí Phi Nguyễn; 22.04.2013

Если вы обрабатываете InputStream, который вы получаете от процесса, он должен работать: `

            Process process = Runtime.getRuntime().exec("sudo fswebcam -r 320x240 -d /dev/video0 /home/pi/apache-tomcat-7.0.37/webapps/co/cam1.jpg");
            InputStream ips = process.getErrorStream();

            int b = 0;
            while ((b = ips.read()) > 0) {
                // do something 
            }

`

person Thomas Mayer    schedule 04.05.2013