精华内容
下载资源
问答
  • image – 在Java访问网络摄像头的最佳方式
    2021-03-09 18:32:48

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

    >访问网络摄像头

    >现在用户可以看到网络摄像头工作,因为他的脸在屏幕上可见

    (已经听到一些libs有没有显示webcam的视频输出)

    >当用户单击保存按钮时,拍摄快照并保存

    我试过了很多方法来做到这一点,从很长时间。

    > JMF – 现在它死了

    > FMJ – 现在它也死了

    > VLCJ – 太多,因为我不是创建一个音乐/视频播放器,它期望VLC安装

    > Xuggler – 太多和辛苦的工作

    > JMyron – 没有工作

    > JavaFX – 我以为它可以做到,但似乎它不能

    我甚至满意,如果图书馆只是做上述提到,因为这是足够的我。但我期望它也很简单。真的很棒,如果它不使用DLL,因为它不是平台独立如果它。真的很感激,如果它可以检测相机,没有手动传递相机名称和其他信息,像在VLCJ(因为可能有成千上万的相机品牌,所以我不能创建一千个元素的列表)。而且,我创建一个桌面应用程序,而不是网络应用程序。

    如果你知道这样的图书馆,请好好让我知道。其他图书馆(这可能不适合我的所有要求,但适合基本要求)也欢迎。请帮忙

    更多相关内容
  • JAVA用webcam 拍照的包,可用在桌面开发,以及JAVAFX上,兼容windows7, windows8
  • 1.需求是 jar包运行后,拉取摄像头rtsp流 推到 rtmp服务器上, http访问观看,支持同时多个视频观看。同等推流软件要一大批费用,我提供java基础代码,方便二次开发加页面配置 或者数据库等 1.断线重连,推流网络等...
  • I need to access web camera using Java. This is what I want to doAccess web camNow the user can see web cam working because his face is visible on screen(have heard some libs are there which doesn't s...

    I need to access web camera using Java. This is what I want to do

    Access web cam

    Now the user can see web cam working because his face is visible on screen

    (have heard some libs are there which doesn't show the video output of webcam)

    when user click save button, take a snapshot and save it

    I have tried number of ways to do this, from a long time.

    JMF - Now it is dead

    FMJ - Now it is dead too

    VLCJ - too much because I am not creating a music/video player and it expect VLC to be installed

    Xuggler - too much and hard work

    JMyron - didn't work

    JavaFX - I thought it could do it, but seems like it can't

    I am even satisfied if the library is just ONLY doing the above mentioned, because that's enough for me. But I expect it to be simple too. Really great if it is not using DLLs, because it is not platform independent if it does. Really appreciate if it can DETECT the camera, without manually passing the camera name and other info as have do in VLCJ (because there might be thousands of camera brands, so I can't create a list of thousand elements in it). And, I am creating a desktop application, not web app.

    If you know a library like this, please be kind enough to let me know. Other libraries (which might not suit to all of my requirements, but suits to the basic requirement) also welcome. Please help

    解决方案

    This has been discussed on SO multiple times. Here are a few links to get you started:

    展开全文
  • 我已经用Java编写了代码来访问网络摄像头并保存图像...我收到以下异常:线程"主"中的异常java.lang.NullPointerException在SwingCapture。(SwingCapture.java:40)在SwingCapture.main(SwingCapture.java:66)如何删除...

    我已经用Java编写了代码来访问网络摄像头并保存图像...

    我收到以下异常:

    线程"主"中的异常java.lang.NullPointerException

    在SwingCapture。(SwingCapture.java:40)

    在SwingCapture.main(SwingCapture.java:66)

    如何删除此例外。

    这是代码:

    import javax.swing.*;

    导入javax.swing.event。

    导入java.io .;

    导入javax.media。

    导入javax.media.format。

    导入javax.media.util .;

    导入javax.media.control .;

    导入javax.media.protocol。

    导入java.util .;

    导入java.awt .;

    导入java.awt.image。

    导入java.awt.event。

    导入com.sun.image.codec.jpeg .;

    公共类SwingCapture扩展Panel实现ActionListener

    {

    public static Player player = null;

    公共CaptureDeviceInfo di = null;

    public MediaLocator ml = null;

    公共JButton捕获= null;

    公共缓冲区buf = null;

    公开图片img = null;

    public VideoFormat vf = null;

    public BufferToImage btoi = null;

    public ImagePanel imgpanel = null;

    公共SwingCapture()

    {

    setLayout(new BorderLayout());

    setSize(320,550);

    imgpanel = new ImagePanel();

    capture = new JButton("Capture");

    capture.addActionListener(this);

    String str1 ="vfw:iNTEX IT-308 WC:0";

    String str2 ="vfw:Microsoft WDM Image Capture (Win32):0";

    di = CaptureDeviceManager.getDevice(str2);

    ml = di.getLocator();

    try

    {

    player = Manager.createRealizedPlayer(ml);

    player.start();

    Component comp;

    if ((comp = player.getVisualComponent()) != null)

    {

    add(comp,BorderLayout.NORTH);

    }

    add(capture,BorderLayout.CENTER);

    add(imgpanel,BorderLayout.SOUTH);

    }

    catch (Exception e)

    {

    e.printStackTrace();

    }

    }

    公共静态void main(String [] args)

    {

    框架f =新框架(" SwingCapture");

    SwingCapture cf =新的SwingCapture();

    f.addWindowListener(new WindowAdapter() {

    public void windowClosing(WindowEvent e) {

    playerclose();

    System.exit(0);}});

    f.add("Center",cf);

    f.pack();

    f.setSize(new Dimension(320,550));

    f.setVisible(true);

    }

    公共静态void playerclose()

    {

    player.close();

    player.deallocate();

    }

    公共无效actionPerformed(ActionEvent e)

    {

    JComponent c =(JComponent)e.getSource();

    if (c == capture)

    {

    // Grab a frame

    FrameGrabbingControl fgc = (FrameGrabbingControl)

    player.getControl("javax.media.control.FrameGrabbingControl");

    buf = fgc.grabFrame();

    // Convert it to an image

    btoi = new BufferToImage((VideoFormat)buf.getFormat());

    img = btoi.createImage(buf);

    // show the image

    imgpanel.setImage(img);

    // save image

    saveJPG(img,"\test.jpg");

    }

    }

    ImagePanel类扩展Panel

    {

    public Image myimg = null;

    public ImagePanel()

    {

    setLayout(null);

    setSize(320,240);

    }

    public void setImage(Image img)

    {

    this.myimg = img;

    repaint();

    }

    public void paint(Graphics g)

    {

    if (myimg != null)

    {

    g.drawImage(myimg, 0, 0, this);

    }

    }

    }

    公共静态无效saveJPG(Image img,String s)

    {

    BufferedImage bi =新的BufferedImage(img.getWidth(null),img.getHeight(null),BufferedImage.TYPE_INT_RGB);

    Graphics2D g2 = bi.createGraphics();

    g2.drawImage(img,null,null);

    FileOutputStream out = null;

    try

    {

    out = new FileOutputStream(s);

    }

    catch (java.io.FileNotFoundException io)

    {

    System.out.println("File Not Found");

    }

    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);

    JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bi);

    param.setQuality(0.5f,false);

    encoder.setJPEGEncodeParam(param);

    try

    {

    encoder.encode(bi);

    out.close();

    }

    catch (java.io.IOException io)

    {

    System.out.println("IOException");

    }

    }

    }

    因此,这就是ml = di.getLocator();行,其后是di = CaptureDeviceManager.getDevice(str2);。 我猜CaptureDeviceManager.getDevice返回了null,可能是由于其API文档中列出的原因。

    字符串str2 =" vfw:Microsoft WDM图像捕获(Win32):0"; 这是用于MS Windows的操作系统,我正在使用Ubuntu Linux。.我认为必须在Linux中替换此行。

    我有ENTER Web Camera Model No:E-1.3MPIR,CaptureDeviceManager.getDevice()的参数应该是什么

    如果大多数情况下使用内置网络摄像头,它将显示错误。 您可以尝试使用外部网络摄像头。

    您的代码有些混乱,但是您是否确定要指定Frame具有borderlayout设置? 我已经经历过很多次了。 尝试明确声明this.Layout = new BorderLayout();。 如果问题仍然存在,请告诉我,请尝试提供帮助。

    实际上,CaptureDeviceManager.getDevice返回null,这就是发生此异常的原因。 我不明白为什么会给这个例外。 我正在Linux平台上的Eclipse中执行此程序。 你能帮我吗?

    展开全文
  • webcam-capture, 这个项目允许头直接从Java访问USB连接的网络摄像头 Webcam Capture API 这个库允许你直接在Java中使用内置的或外部的摄像头,它的设计目的是抽象常用的相机功能,并支
  • 由于需要做一个自动拍照系统,所以在网上学习了使用java打开摄像头,很多人推荐javaCV,但是我不小心使用了JFM,所以先这样吧~~在oracle网站下载window平台的JMF,如下图 从图中I586可以看出,我们的jdk也必须要是32...

    由于需要做一个自动拍照系统,所以在网上学习了使用java打开摄像头,很多人推荐javaCV,但是我不小心使用了JFM,所以先这样吧~~

    在oracle网站下载window平台的JMF,如下图

    0818b9ca8b590ca3270a3433284dd417.png

    从图中I586可以看出,我们的jdk也必须要是32位的,(尝试发现64位的JDK将导致JMF无法检测出摄像头,至少在我的电脑上是的)

    目前我的本机64位win7 +32位jdk1.8;

    将jmf-2_1_1e-windows-i586.exe双击按照提示安装成功后,在你的JDK安装目录\jre\lib\ext下,会多出两个文件:jmf.jar和sound.jar

    接着在JMF的安装目录下打开bin/jmfregistry.exe

    0818b9ca8b590ca3270a3433284dd417.png

    效果如下:

    0818b9ca8b590ca3270a3433284dd417.png

    可以看出这是还没有检测到摄像头

    接着点击左下角的Detect Capture Devices

    0818b9ca8b590ca3270a3433284dd417.png

    点击确定后,摄像头依旧没出现,不知道什么原因(多点几次Detect Captur Devices就好了,并不是我一个人的电脑这样,很多人都这样的),最终效果如下

    0818b9ca8b590ca3270a3433284dd417.png

    OK,这时候,摄像头成功注册了。

    接下来可以编写代码了,下边的代码是我从网上照的前辈写的(被我删掉了一部分),点击进入源码地址,源码好像有拍照功能,但是无论是使用源码还是使用下边这段精简版,都会存在找不到拍照按钮

    import javax.swing.*;//使用swing库

    import javax.swing.event.*;

    import java.io.*;

    import javax.media.*;

    import javax.media.format.*;

    import javax.media.util.*;

    import javax.media.control.*;

    import javax.media.protocol.*;

    import java.util.*;

    import java.awt.*;

    import java.awt.image.*;

    import java.awt.event.*;

    import com.sun.image.codec.jpeg.*;

    public class SwingCapture extends JPanel implements ActionListener//是JPanel里的子类,实现了ActionListener接口,动作侦听器

    {

    public static Player player = null;//一个播放对象,目前为空

    public CaptureDeviceInfo di = null;//设备的配置信息

    public MediaLocator ml = null;//

    public JButton capture = null;//一个按钮

    public Buffer buf = null;

    public Image img = null;

    public VideoFormat vf = null;

    public BufferToImage btoi = null;

    public ImagePanel imgpanel = null;//声明一个相片图片容器,ImagePanel类在后边声明

    public SwingCapture()//构造函数,设置swing的外观风格。

    {

    this.setLayout(new BorderLayout());//设置布局,BorderLayout()一种布局管理器

    this.setSize(10,10);//设置面板大小,数字是像素点

    imgpanel = new ImagePanel();//相片图片容器

    capture = new JButton("Capture");//照相按扭

    capture.addActionListener(this);//使用窗体自身监听这个按扭

    capture.setSize(10,10);

    capture.setBackground(Color.BLUE);

    String str1 = "vfw:Logitech USB Video Camera:0";

    String str2 = "vfw:Microsoft WDM Image Capture (Win32):0";

    di = CaptureDeviceManager.getDevice(str2);//获得设备控制权

    ml= di.getLocator();//定位

    setLayout(new GridLayout(3,1));

    try

    {

    player = Manager.createRealizedPlayer(ml);//实现定位目标

    player.start();//开始实现

    Component comp;//创建一个组件

    if ((comp = player.getVisualComponent()) != null)// 可视组件不为空

    {

    add(comp);//增加到组件容器

    }

    add(imgpanel);

    add(capture);

    }

    catch (Exception e)

    {

    e.printStackTrace();

    }

    }

    public static void playerclose()//关闭窗体后,在exit程序之前,用于释放播放器资源

    {

    player.close();

    player.deallocate();//停止播放器后必须释放内存中的资源

    }

    public static void saveJPG(Image img, String s)//保存图片

    {

    BufferedImage bi = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_RGB);//从buf中取得图片对像

    Graphics2D g2 = bi.createGraphics();//取得绘画图形工具

    g2.drawImage(img, null, null); //绘画图形

    FileOutputStream out = null;//创建存放文件流对像

    try

    {

    out = new FileOutputStream(s); //创建存放指定文件流路经对像

    }

    catch (java.io.FileNotFoundException io)

    {

    System.out.println("File Not Found");

    }

    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); //创建一个和指定输出流关联的JPEGImageEncoder对象

    JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bi); //此方法根据指定的压缩率浮点值

    param.setQuality(0.5f,false); //压缩大小为一半

    encoder.setJPEGEncodeParam(param);//将图片放进输出流

    try

    {

    encoder.encode(bi); //编码这个输出流

    out.close();//关闭

    }

    catch (java.io.IOException io)

    {

    System.out.println("IOException");

    }

    }

    public static void main(String[] args)

    {

    JFrame f = new JFrame("SwingCapture");//创建一个窗体

    SwingCapture cf = new SwingCapture();//创建一个面板

    //给java做的图形界面添加关闭事件的时候,使用了WindowAdapter这个类

    f.addWindowListener(new WindowAdapter() {

    public void windowClosing(WindowEvent e) {

    playerclose();//

    System.exit(0);

    }

    }

    );

    f.add(cf,BorderLayout.CENTER);//向frame容器里输入swing风格中间大小帖的图片

    f.pack();//打包放进容器

    f.setSize(316,728);//设定JFrame的规格大小

    f.setResizable(false);

    f.setVisible(true); //显示一个Frame帖(没保存前先显示)

    }

    public void actionPerformed(ActionEvent e)//此类的侦听部分

    {

    JComponent c = (JComponent) e.getSource();//创建一个绘画对像

    if (c == capture)//按拍照后

    {

    // Grab a frame

    FrameGrabbingControl fgc = (FrameGrabbingControl)//从视频轨迹中抽取当前帧对像

    player.getControl("javax.media.control.FrameGrabbingControl");//获取当前祯

    buf = fgc.grabFrame();//抓下来的图片放在buffer的中

    // Convert it to an image

    btoi = new BufferToImage((VideoFormat)buf.getFormat());//取得一个视频格式对像

    img = btoi.createImage(buf);//转化流格式 为图片格试

    // show the image

    imgpanel.setImage(img);//引用imgpanel面板显示图片

    // save image

    saveJPG(img,"C:\\Users\\fujiaxiaoshao\\Desktop\\照片.jpg");//保存图片到本地硬盘

    }

    }

    class ImagePanel extends Panel//一个内部类,图片面板

    {

    public Image myimg = null;//创建一个图片对像

    public ImagePanel()

    {

    setLayout(null);//设置布局

    setSize(310,237);//设置布局大小

    }

    public void setImage(Image img)

    {

    this.myimg = img;

    repaint();//重绘

    }

    public void paint(Graphics g) //绘画图形

    {

    if (myimg != null)

    {

    g.drawImage(myimg, 0, 0, this); //绘画图形

    }

    }

    }

    }

    将代码存成如下文件:

    0818b9ca8b590ca3270a3433284dd417.png

    在命令行模式下编译并运行(如果安装JMF后没有重启PC将会报错,所以一定要重启),如下图:

    0818b9ca8b590ca3270a3433284dd417.png

    效果如下:

    0818b9ca8b590ca3270a3433284dd417.png

    拍摄成功的照片:

    0818b9ca8b590ca3270a3433284dd417.png

    PS:很多人会在ecliose中运行,会出现空指针报错,这应该是因为没有获取到摄像头驱动,应该

    将jmf安装目录\lib目录下的jmf.jar,sound.jar,mediaplayer.jar三个文件导入工程,就可以正常运行了。

    参考博客:http://my.oschina.net/hetiangui/blog/133189

    http://blog.csdn.net/zajin/article/details/9288239

    http://zhangjunhd.blog.51cto.com/113473/25475

    展开全文
  • JavaCV的摄像头实战之一:基础

    千次阅读 2021-11-27 08:10:14
    使用JavaCV库来获取摄像头数据,实现预览、直播、人脸检测等多种功能,本文是整个系列的开篇,会为后续实战打好基础,做好准备
  • java对接海康摄像头

    2021-07-16 10:00:47
    2我的项目最终会发布到阿里云上面,不在同一个网络了,我尝试用java去调用海康接口拿到视频流,这块需要协助 3或者能否采用阿里云映射到本地网络,还是通过解决网络去访问,使用web开发包。 -------除积分外,另外...
  • 可是树莓派上的摄像头就那么几种,jmf、webcam、javacv,前两个都老掉牙了,windows上还行,树莓派上各种不得劲,armhf平台还有奇奇怪怪的问题,javacv又特别庞大,真是太难选择了,为啥java用个摄像头就这么麻烦。...
  • 我用Java编写代码来访问网络摄像头,并保存图像...我得到以下例外:SwingCapture中的线程“main”java.lang.NullPointerException异常 . (SwingCapture.java:40)SwingCapture.main( SwingCapture.java:66)如何删除...
  • JavaCV调用摄像头

    千次阅读 2019-04-24 21:27:26
    安装Javacv 简介:javacv是使用java的视觉库,包含了Opencv、FFmpeg等接口 github-javacv 若是Intellij IEDA可直接新建Maven项目,在pom.mxl中添加依赖,IDEA将自动下载依赖库 <?xml version="1.0" ...
  • JavaCV的摄像头实战之八:人脸检测

    千次阅读 多人点赞 2021-12-05 16:14:04
    在预览摄像头内容的时候增加识别功能,实时框选出人脸
  • 借助JavaCV,将摄像头的视频和麦克风的音频保存到mp4文件中
  • Java语言编程中,如何使用java启用电脑的摄像头摄相拍照?注意:需要访问网址: , 下载一个OpenCV软件包。这里下载最新版本:opencv-3.2.0-vc14.exe并解压此文件到D:softwareopencv目录中。项目结构如下图所示 –...
  • Java调用电脑摄像头拍照实现例子

    万次阅读 2019-01-06 14:46:12
    运用的是开源项目webcam-...在以下环境中测试通过: java 1.8 Windows10 64位【其他应该也没问题】 项目代码包括jar在这里下载: https://download.csdn.net/download/qq_22078107/10899220 效果图:
  • javafx通过javacv访问网络摄像头

    千次阅读 2017-05-30 18:58:25
    百度搜 javafx 摄像头,结果都...访问USB或机身自带摄像头,不用javacv也能很容易的实现,具体参考: https://github.com/sarxos/webcam-capture/tree/master/webcam-capture-examples/webcam-capture-javafx we...
  • // 开启摄像头,获取图像(得到的图像为frame类型,需要转换为mat类型进行检测和识别) OpenCVFrameGrabber grabber = new OpenCVFrameGrabber(0); grabber.start(); // Frame与Mat转换 OpenCVFrameConverter.ToMat...
  • 借助JavaCV,将摄像头的视频帧保存文本地mp4文件
  • 借助JavaCV,完成本地摄像头和麦克风数据推送到媒体服务器的操作,并用VLC验证
  • Java调起手机电脑摄像头

    千次阅读 2020-07-02 08:37:35
    -- java调用摄像头 --> <!-- https://mvnrepository.com/artifact/org.bytedeco/javacv-platform --> <dependency> <groupId>org.bytedeco</groupId> <artifactId>javacv-p
  • 我必须制作2个小程序,它们将在TOMCAT服务器中运行,当我在客户端访问网页[HTML页面]时,我有2个摄像头连接到该客户端PC,我想要显示来自两个摄像头的视频客户端同时有2个网页.我尝试过使用JMF.出来就是>对于大多数...
  • java程序中调用摄像头实现jsp程序摄像头数据采集 在项目中要用到jsp页面实现网页采集摄像头图像,并实现上传的功能,页面主要js调用的,所以可以使用多种语言php,asp等都可以使用,而且是跨浏览器的。使用方法1:...
  • 霍布森 霍布森(Hobson)是物联网的跨平台自动化中心和聚合器。 它提供了一种控制各种设备的智能设备(如灯,摄像机和恒温器)的通用方法 它不依赖付费服务,因此可以...一个实现Foscam网络摄像头发现协议的Java库。
  • 使用JavaCV与百度AI开放平台,实现对摄像头内人脸的口罩检测
  • java调用usb摄像头

    千次阅读 2016-02-24 19:52:50
    一、采用ocx的方式也就是activex插件的模式调用本地的摄像头 一般来说 调用外接的usb摄像头成功率会高一点,某些笔记本有时会无法成功调用自带的摄像头 ...二、采用基于opencv开发的javacv开源工具进行
  • 本文是《JavaCV的摄像头实战》的第五篇,一起来考虑个问题:本地摄像头的内容,如何让网络上的其他人看见? 这就涉及到了推流,如下图,基于JavaCV的应用将摄像头的视频帧推送到媒体服务器,观看者用播放器软件远程...
  • 问题:大华IPC枪型摄像头需要在WEB中显示实时监控视频,官方提供的SDK只有C#的桌面程序访问方式。解决思路:RTSP协议访问方式将RTSP流转换成hls文件在H5的video播放器中进行播放实时视频。一、首先将摄像头连接好网络,...
  • 安卓设备代码,采集图像数据。更改ip变量为自己的设备ip。 public class MainActivity extends AppCompatActivity { ByteArrayOutputStream bm; boolean boo; OutputStream outputStream;... InputStream ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,184
精华内容 4,873
关键字:

java 摄像头访问

java 订阅