利用摄像头拍照

1.获取摄像头驱动,和获取摄像头内的图像流 
public   static   Player   player  =   null;
 
private   CaptureDeviceInfo   di  =   null; 
private   MediaLocator   ml   =  null; 
String   str1   =  "vfw:Logitech   USB   Video   Camera: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); 
} 
}
 
catch   (Exception   e) 

e.printStackTrace(); 
}
 
2.拍照,获取图像 
private   JButton   capture;
 
private   Buffer   buf   =  null; 
private   BufferToImage   btoi   =  null; 
private   ImagePanel   imgpanel   =  null; 
private   Image   img   =  null; 
private   ImagePanel   imgpanel   =  null; 

JComponent   c   =   (JComponent)  e.getSource(); 
if   (c   ==   capture)//如果按下的是拍照按钮   
{  
 
FrameGrabbingControl  fgc   =(FrameGrabbingControl)   player.getControl("javax.media.control.FrameGrabbingControl "); 
buf  =   fgc.grabFrame();   //   获取当前祯并存入Buffer 
btoi  =   new   BufferToImage((VideoFormat)   buf.getFormat()); 
img  =   btoi.createImage(buf);   //   show   the  image   
imgpanel.setImage(img); 
}
 
3.保存图像 
BufferedImage   bi   =  (BufferedImage)   createImage(imgWidth,   imgHeight);
 
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(1f,   false);//不压缩图像 
encoder.setJPEGEncodeParam(param);
 
try 

encoder.encode(bi); 
out.close(); 
}
 
catch   (java.io.IOException   io) 

System.out.println("IOException "); 
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值