2013-04-20 130 views
1

在我的树莓派,我可以成功地捕获和LXTerminal拯救我的罗技临9000的USB摄像头的图像有以下的bash行:从Java程序运行的Bash捕获网络摄像头图像上树莓派

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

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

回答

0

/bin/bash -c fswebcam -d /dev/video0 /home/pi/image.jpg不会在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) 
+0

谢谢你的建议。我尝试了以上所有内容,但仍然无法正常工作。该程序编译,但是当我运行它时没有任何反应。 =( – 2013-04-22 05:50:24

0

如果你处理你的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 
      } 

`

2

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

sudo apt-get install fswebcam 

然后在Java程序,你需要运行以下

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

为我工作,希望它适合你! =)

起初我有同样的问题,顺便说一句.. =)

祝你好运!