`

JAVA代码调用客户端摄像头 初步探讨

    博客分类:
  • OPEN
阅读更多
首先到sun下载最新的jmf,然后安装。

  然后,说一下需求

  1.   用摄像头拍照

  2.   在文本框输入文件名

  3.   按下拍照按钮,获取摄像头内的图像

  4.   在拍下的照片上有一红框截取固定大小的照片。

  5.   保存为本地图像为jpg格式,不得压缩画质

  技术关键,相信也是大家最感兴趣的部分也就是如何让一个摄像头工作,并拍下一张照片了。

  利用jmf,代码很简单:

//利用这三个类分别获取摄像头驱动,和获取摄像头内的图像流,获取到的图像流是一个swing的component组件类

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(); 
}   

  接下来就是点击拍照,获取摄像头内的当前图像。

  代码也是很简单:

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); 
}   

  保存图像的就不多说了,以下为示例代码

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 "); 
}
把.jar文件导入。下载了jmf后需要安装,安装后你的那个jmf目录下就会有一个lib文件夹里面有.jar文件,然后打开eclipse,右键选择你的工程-〉属性-〉java   build   path-> library-〉add   external   jars   找到你的jmf目录下lib的那个文件夹然后选中那些文件导入就ok了。
然后利用工具提供的导入文件帮助,一个一个导就OK了
分享到:
评论
4 楼 LanceDream 2013-03-28  
楼主代码有很多问题,本来有的大写字母变成小写的了(如String、Player和CaptureDeviceInfo等)。而且说的也很一般,很让人费解!!!
3 楼 扎尔伯格 2012-05-15  
抄别人的吧
2 楼 andyihk 2011-04-10  
博主懂的还真多啊。。。
1 楼 andyihk 2011-04-10  

相关推荐

    javacv调用本地摄像头

    在“javacv调用本地摄像头”的场景中,我们将深入探讨如何使用JavaCV来访问和捕获本地摄像头的实时视频流。 首先,为了使用JavaCV,你需要确保已经正确地安装了OpenCV库。在本例中,指定的版本是OpenCV 2.4.10。...

    java swing opencv调用摄像头实现拍照及本地保存支持上传FTP路径配置

    在本文中,我们将深入探讨如何使用Java Swing和OpenCV库来调用摄像头,实现拍照功能,并将拍摄的照片本地保存以及支持上传至FTP服务器。通过理解并应用这些知识点,你可以创建一个用户友好的桌面应用程序,方便地...

    四、JAVA调用海康威视SDK实现摄像头内网推流到阿里云

    在本项目中,我们主要探讨如何使用JAVA编程语言调用海康威视(Hikvision)的SDK,以便实现摄像头的内网预览功能,并将视频流推送到阿里云服务。这一过程涉及到多个技术栈,包括后端开发、网络通信以及云端服务的集成...

    spring boot+mybatis 项目 调用网络摄像头,进行录像(以华为摄像头为例子,可以使用多种网络摄像头)

    在本项目中,我们主要探讨如何使用Spring Boot和MyBatis框架来调用网络摄像头进行录像,以华为摄像头为例,并且实现将录制的视频通过SFTP协议上传到远程服务器进行存储。以下是对该项目涉及的技术点的详细说明: 1....

    html5调用摄像头拍照ajax java上传

    在本项目中,我们将探讨如何利用HTML5中的`<canvas>`和`<video>`标签调用用户摄像头进行拍照,并通过AJAX(异步JavaScript和XML)技术配合Java后端实现图片的上传。 1. HTML5 `<video>`标签: `<video>`标签是...

    java调用摄像头

    本篇文章将深入探讨如何使用Java、JavaScript以及ASP.NET这三种编程语言来实现调用摄像头的功能。 首先,我们从Java开始。在Java中,我们可以使用Java Media Framework (JMF) 或 JavaFX 来访问摄像头。JMF 是一个...

    JAVA+FLEX实现摄像头捕捉图像

    本教程将探讨如何使用JAVA和FLEX技术实现摄像头捕捉图像。JAVA和FLEX是两种不同的技术,但可以协同工作以实现跨平台的富互联网应用程序(RIA)。 首先,JAVA作为一个强大的后端开发语言,主要负责处理服务器端逻辑...

    springboot 摄像头 实时播放

    在本文中,我们将深入探讨如何使用SpringBoot框架实现实时播放来自摄像头的视频流,特别是通过RTSP(Real Time Streaming Protocol)协议。RTSP是一种应用层协议,常用于控制音视频数据的传输,如监控摄像头的实时...

    web版基于Java的海康摄像头SDK车牌抓拍功能二次开发(springboot+maven).zip

    在本项目中,我们主要探讨的是如何利用Java进行海康摄像头SDK的二次开发,以便实现web版的车牌抓拍功能。这个项目构建于SpringBoot框架之上,并且使用Maven作为项目管理工具。以下是对这些关键知识点的详细说明: 1...

    Web网页控制摄像头

    在这种模式下,用户通过浏览器访问服务器上的应用程序,所有的处理逻辑和数据存储都在服务器端完成,而客户端只需展示结果和接收用户输入。在我们的场景中,服务器端的ASP.NET负责处理摄像头的调用逻辑,而HTML则...

    javaweb结合onvif视频实时监控项目(源码)

    在JavaWeb项目中,我们需要使用Java编写客户端,连接到支持ONVIF的摄像头,获取实时视频流。 3. **视频流处理**:视频流是连续的图像帧,项目中使用流的方式处理视频,意味着我们需要将接收到的原始视频流进行解析...

    jsp摄像头编程示例代码

    在IT行业中,JSP(JavaServer Pages)是一种用于创建动态网页的技术,它允许开发者将...通过分析和学习这个代码,开发者可以掌握如何在Java Web应用中集成摄像头功能,这对于开发实时监控、视频会议等应用非常有帮助。

    Java海康威视网络摄像机和NVR录像机的SDK二次开发,实现对网络摄像机/NVR的实时流、历史流的推流功能以及抓图、录像下载等

    在本文中,我们将深入探讨如何使用Java进行海康威视(Hikvision)网络摄像机和NVR录像机的SDK二次开发,实现一系列高级功能,包括实时流与历史流的推流、抓图、录像下载以及云台控制。首先,我们需要理解海康威视SDK...

    获取rtsp流方式

    本文将深入探讨RTSP流的基本概念、工作原理,以及如何通过Java代码实现与海康等厂商的完美对接。 1. RTSP流基本概念: RTSP是一种应用层协议,它建立在TCP或UDP之上,为用户提供实时数据如音频、视频的控制。与...

    JAVA版FLEX在线拍照代码

    本文将详细探讨如何在JAVA版的Flex项目中实现摄像头在线拍照功能,这一功能通常用于用户上传头像、身份证件照片或者进行远程会议等场景。 Flex是一种基于Adobe AIR和Flash Player的开发框架,它允许开发者使用...

    打开本机摄像头

    我们将深入探讨与摄像头相关的技术细节,包括摄像头接口、视频流处理以及相关的编程语言和库。 首先,让我们了解摄像头的基本原理。摄像头是一种能够捕获光线并将其转化为数字信号的设备。在计算机系统中,摄像头...

    基于android的手机监控系统客户端源代码和服务器端

    1. **视频采集**:服务器端需要采集摄像头的视频流,可能需要调用特定的硬件驱动或API,如DirectShow、V4L2等。 2. **编码与传输**:服务器端将采集到的原始视频数据编码成适合网络传输的格式,如H.264,然后通过...

    海康威视监控LINUX版本和WINDOWS版本JAVA实例

    至于“ClientDemo_Camera”这个压缩包子文件,很可能是包含了一个客户端示例代码,用于演示如何连接并操作海康威视的摄像头。这个文件可能包含了一个JAVA类或者一系列相关类,这些类可能实现了设备发现、视频流获取...

    android_调用摄像头拍摄一段视频并上传到服务器.rar

    在Android平台上,开发一款应用程序来调用摄像头拍摄视频并上传至服务器是一项常见的需求。这个"android_调用摄像头拍摄一段视频并上传到服务器.rar"压缩包文件可能包含了一个实现这一功能的示例项目。让我们详细地...

    海康摄像头web二次开发demo(官方DEMO)

    3. **调用API**:使用JavaScript脚本调用摄像头提供的API,实现云台控制、录像操作等功能。 4. **处理响应**:摄像头执行命令后,会返回相应的状态或数据,需要在前端代码中处理这些响应。 5. **界面交互**:构建...

Global site tag (gtag.js) - Google Analytics