java链接网络摄像头

编程入门 行业动态 更新时间:2024-10-24 18:21:20

java链接网络<a href=https://www.elefans.com/category/jswz/34/1767894.html style=摄像头"/>

java链接网络摄像头

我已经用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中执行此程序。 你能帮我吗?

更多推荐

java链接网络摄像头

本文发布于:2024-03-15 07:38:45,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1738405.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:摄像头   链接   网络   java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!