1

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

它不工作。我没有收到错误消息。请帮忙!

4

3 回答 3

2

首先,您需要安装 fswebcam ....

sudo apt-get install fswebcam

然后,在您的 Java 程序中,您需要 运行以下命令:

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

为我工作,希望它对你有用!=)

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

祝你好运!
于 2014-08-10T22:45:38.297 回答
0

/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)
于 2013-04-21T19:02:36.900 回答
0

如果您处理从 Process 获得的 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 
            }

`

于 2013-05-04T14:24:23.770 回答