从Java程序运行Bash以在Raspberry Pi上捕获网络摄像头图像

从Java程序运行Bash以在Raspberry Pi上捕获网络摄像头图像,java,bash,webcam,image-capture,Java,Bash,Webcam,Image Capture,在我的Raspberry Pi上,我可以通过以下bash行从LXTerminal成功捕获和保存我的Logitech Pro 9000 USB摄像头中的图像: fswebcam -d /dev/video0 /home/pi/image.jpg 我想编写一个运行上面bash行的java程序,因为这是捕获和保存图像的最简单方法。到目前为止,我已经: import java.io.*; public class GrabNSave { public static void main(Strin

在我的Raspberry Pi上,我可以通过以下bash行从LXTerminal成功捕获和保存我的Logitech Pro 9000 USB摄像头中的图像:

fswebcam -d /dev/video0 /home/pi/image.jpg
我想编写一个运行上面bash行的java程序,因为这是捕获和保存图像的最简单方法。到目前为止,我已经:

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

它不起作用了。我没有收到任何错误消息。请帮忙

/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)

如果处理从流程中获得的InputStream,它应该可以工作: `


`

首先,您需要安装fswebcam

sudo apt-get install fswebcam
然后,在Java程序中,您需要运行以下程序:

Runtime.getRuntime().exec("fswebcam -d /dev/video0 /home/username/Desktop/test.jpg");
为我工作,希望为你工作!=)

顺便说一句,一开始我也有同样的问题……)


祝你好运谢谢你的建议。我尝试了以上所有方法,但仍然不起作用。程序可以编译,但当我运行它时,什么都不会发生=(
Runtime.getRuntime().exec("fswebcam -d /dev/video0 /home/username/Desktop/test.jpg");