繁体   English   中英

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

[英]Run Bash from Java Program to Capture Webcam Image on Raspberry Pi

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

没用 我没有收到任何错误消息。 请帮忙!

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

sudo apt-get install fswebcam

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

Runtime.getRuntime().exec("fswebcam -d /dev/video0 /home/username/Desktop/test.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,则可以从Process中获取该信息:

            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 
            }

`

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM