Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 在Java中访问web摄像机的最佳方法_Image_Camera_Webcam_Java - Fatal编程技术网

Image 在Java中访问web摄像机的最佳方法

Image 在Java中访问web摄像机的最佳方法,image,camera,webcam,java,Image,Camera,Webcam,Java,我需要使用Java访问网络摄像头。这就是我想做的 存取网络摄像机 现在用户可以看到网络摄像机工作,因为他的脸在屏幕上是可见的 (听说有些LIB不显示网络摄像头的视频输出) 当用户单击“保存”按钮时,拍摄快照并保存它 很长一段时间以来,我已经尝试了很多方法来做到这一点 现在它死了 FMJ-现在它也死了 VLCJ-太多了,因为我没有创建音乐/视频播放器,它希望安装VLC Xuggler-工作太多太辛苦 杰米隆-不起作用 JavaFX-我以为它可以做到,但似乎不行 我甚至对图书馆只做上面提到的事情感到

我需要使用Java访问网络摄像头。这就是我想做的

  • 存取网络摄像机

  • 现在用户可以看到网络摄像机工作,因为他的脸在屏幕上是可见的 (听说有些LIB不显示网络摄像头的视频输出)

  • 当用户单击“保存”按钮时,拍摄快照并保存它

  • 很长一段时间以来,我已经尝试了很多方法来做到这一点

  • 现在它死了
  • FMJ-现在它也死了
  • VLCJ-太多了,因为我没有创建音乐/视频播放器,它希望安装VLC
  • Xuggler-工作太多太辛苦
  • 杰米隆-不起作用
  • JavaFX-我以为它可以做到,但似乎不行
  • 我甚至对图书馆只做上面提到的事情感到满意,因为这对我来说已经足够了。但我希望它也很简单。如果它不使用DLL,那真的很棒,因为如果它使用DLL,它就不是平台独立的。如果它能够检测到摄像头,而不需要像在VLCJ中那样手动传递摄像头名称和其他信息(因为可能有数千个摄像头品牌,所以我无法在其中创建包含数千个元素的列表),那就非常感谢了。而且,我正在创建一个桌面应用程序,而不是web应用程序


    如果你知道这样的图书馆,请告诉我。其他库(可能不适合我的所有需求,但适合基本需求)也很受欢迎。请帮助

    这已经讨论了很多次了。以下是一些让您开始学习的链接:

    因此:

    因此:

    openCVF小程序:


    配置:

    我想你正在寻找的项目是:(我是作者)

    有一个示例与您描述的完全相同-运行后,窗口出现,在您按下“开始”按钮后,您可以从网络摄像头设备中看到实时图像,并在单击“快照”后将其保存到文件中(请注意,角落中的FPS计数器可以被禁用):

    该项目是可移植的(WinXP、Win7、Win8、Linux、Mac、Raspberry Pi),不需要在PC上安装任何其他软件

    API非常好学。示例如何捕获单个图像并将其保存到PNG文件:

    Webcam webcam = Webcam.getDefault();
    webcam.open();
    ImageIO.write(webcam.getImage(), "PNG", new File("test.png"));
    

    可能有成千上万的摄像机?真正地你是为保安公司写这封信还是什么?此外,一个包含数千个元素的列表也不错——你可以在用户界面上对它进行过滤,或者让它以某种方式进行搜索。@corsiKa:不,我的意思是,如果我要把它交给其他人,我不能每次都修改程序,给出他们的相机名称。你知道,应该有一种方法可以与所有(或至少是一系列)相机品牌配合使用。在VLC中,我们不传递摄像机名称,而是识别它。事实上,这就是我的意思。谢谢你的回答。那么,你是在建议javaCV?还有一个问题,为什么大多数JavaCV文章建议安装“微软Visual C++可再分发软件包”?只是因为我们需要获取DLL或其他东西?@Bartosz,这不是唯一本地的吗?如何将数据直接传递给另一个客户端以进行网络摄像头?@Pacerier,您可以使用IP摄像头驱动程序从远程网络摄像头获取数据(如果摄像头支持JPEG或MJPEG,源代码中提供了演示),也可以通过网络摄像头Streamer(非常有限但可以工作的网络服务器,提供MJPEG流)从本地摄像头公开图像。源代码中还有一个示例演示了如何使用xuggler将图像帧流式传输为h.264(不过只是概念证明)。@BartoszFiryn,iTalki、Google Helpout、clarity.fm、LiveNinja等就是这样工作的吗?既然几乎每个防火墙都会阻止流量,除非它的http(s)?@Pacerier,我不处理延迟和带宽,因为这个库不打算通过internet进行流式传输。请查看项目页面和/或如果您有任何其他问题,请随时打开新的票证,这样我们就不会用不必要的评论来滥发stackoverflow。这个库实际上似乎可以工作(在Linux上测试)。移植到JavaX