如何在win7 64bit上使用javaFX在网络摄像头拍摄图像?

时间:2012-09-23 11:57:37

标签: java webcam javafx

我想从网络摄像头拍摄图像。我怎么能这样做?
如果您的建议库有任何示例代码,那么对我来说它比其他代码更好。

我检查过这些:

  • Jmyron
  • Java Media Framework
  • JavaCV
  • LT-民用

这些没用。这些不起作用或没有示例代码。 你有什么建议吗?

4 个答案:

答案 0 :(得分:3)

试试这个项目:

http://github.com/rladstaetter/isight-java/

和相应的博文

http://ladstatt.blogspot.co.at/2013/04/using-isight-camera-with-javafx.html

请记住,您必须拥有适合您架构的正确opencv dll(x64)

答案 1 :(得分:1)

我剥离了OpenIMAJ核心视频捕获库以从网络摄像头获取图像。它适用于我的macbook,linux deskdop和windows 7环境。

您不需要安装任何东西,只需要两个罐子。你可以从我的网站上找到这个例子:

http://www.sleepingdumpling.com/blog/download/jvideoinput/

答案 2 :(得分:0)

以下是指向Demonstration JavaFX Camera capture application using LTI-CIVIL

的链接

你说LTI-CIVIL库只有32位是正确的,所以可能没用。在你的情况下,64位是必要的。

答案 3 :(得分:0)

现在,我在Windows 7 X64机器上使用javacv。 它适用于win7 32,win7 64,linux X86& X64

1-你需要安装opencv或者只是将opencv dll文件复制到C:/(复制:opencv files

2-将javacpp.jar,javacv.jar和javacv-windows-x86-64.jar添加到您的项目中。

3-将awt图像转换为javafx图像的方法

  

public static javafx.scene.image.Image convertToFxImage(java.awt.image.BufferedImage awtImage){

   if (Image.impl_isExternalFormatSupported(BufferedImage.class)) {

       return javafx.scene.image.Image.impl_fromExternalImage(awtImage);    
     

} else {return null;}   }

4 - 将其添加到控制器类:

  

@FXML

     

私人ImageView camview;

     

IplImage img;

     

@覆盖

     

public void initialize(URL url,ResourceBundle rb){

     

任务任务=新任务(){

     

@覆盖

     

public Void call(){

 FrameGrabber grabber = new OpenCVFrameGrabber(0); // 1 for next camera 

   try {

     grabber.start();

     while (true) {

     img = grabber.grab();

       if (img != null) {

        cvSaveImage((i++) + "-pic.jpg", img); // save image

        camview.setImage(convertToFxImage(img.getBufferedImage())); //show image on ImageView                  

       }

     }

   } catch (Exception e) {}

 return null;}};

new Thread(task).start();}