「java调用摄像头」java调用摄像头识别条形码

博主:adminadmin 2023-03-22 14:55:10 95

今天给各位分享java调用摄像头的知识,其中也会对java调用摄像头识别条形码进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java程序怎样调用安卓相机

自己写一个“摄像头照相软件”的东西,然后实现了在web程序中调用摄像头,可以通过js代码控制拍照,通过ajax技术实现数据的上传,虽然我没有在asp.net程序中测试,但是应该支持.net技术,也可以实现在asp.net的项目中采集摄像头数据,例如用来通过摄像头拍照,拍些大头贴等

如何使用java启用电脑的摄像头摄相拍照

方法/步骤

1

第一种方法,官方软件打开。

第一步,检测摄像头驱动是否正常安装。

右击计算机,点击管理进入计算机的管理界面,选择设备管理器,查看里面的摄像头驱动是否已经安装并正常运行。

2

第二步,下载安装官方软件。

我们的电脑一般都会安装好相应的驱动了,只不过还没有相应的软件的支持,如果你的电脑是正版系统的话,那么这些都会带着,如果不是我们需要自己到官网去下载安装。以联想为例(YouCam)。

3

第三步,点击软件即可打开笔记本自带的摄像头。

安装完成后后自动生成一个快捷方式,双击快捷方式即可打开摄像头。

4

第二种方法,360魔法摄像头打开。

如果你的电脑安有360安全卫士的话,那么就很方便了。打开360安全卫士,进入功能大全界面添加360魔法摄像头功能即可。

5

点击安装后你可以直接点击打开电脑的摄像头,也可以在计算机中打开,因为这是你的计算机(我的电脑)中会多出一个摄像头的功能。

1、安卓调用摄像头拍照

近期在做毕设,需要用到Android调用摄像头拍摄车牌号,并对车牌号码进行识别。特别记录一下如何调用系统摄像头进行拍照,并将文件保存到本地。

环境:Android Studio

官方指南: Camera|Android Developer

1、首先当然要添加一下调用摄像头需要的权限,以及创建文件需要的权限等

AndroidMainfest.xml

2、添加函数,创建临时文件,用来储存图片

MainActivity.java

3、创建函数用来启动摄像头,并储存文件

MainActivity.java

4、因为上面使用到privider,因此需要在res下创建xml文件夹、创建文件file_paths.xml,并添加对应的设置

file_paths.xml

AndroidMainfest.xml

5、在onCreate()中调用dispatchTakePictureIntent()函数

MainActivity.java

其保存的文件目录如下:

/storage/emulated/0/Android/data/com.example.takephotos/files/Pictures/JPEG_20190312_2339464476956325377028564.jpg

安卓拍照并且保存本地就到这里完成了。

java如何控制球机摄像头?

用JMF(Java Media Framework)

调用摄像头驱动,发送拍照命令,保存图片

JAVA代码如何调用客户端摄像头

首先到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了

android中用Camera来调用摄像头,只能用takePicture来拍照吗?

android中用Camera来调用摄像头,只能用takePicture来拍照吗?

代码与范例:

首先需要在Manifest文件中添加以下内容:

以使程序获取摄像头使用以及自动对焦功能的使用权限。

CameraTestActivity.java

import android.app.Activity;

import android.os.Bundle;

import android.view.Window;

import android.view.WindowManager;

public class CameraTestActivity extends Activity {

@Override

public void onCreate(Bundle bundle) {

super.onCreate(bundle);

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

requestWindowFeature(Window.FEATURE_NO_TITLE); 设置横屏模式以及全屏模式

setContentView(new CameraView(this)); 设置View

}

}

CameraView.java

import java.io.FileOutputStream;

import android.content.Context;

import android.hardware.Camera;

import android.os.Environment;

import android.view.MotionEvent;

import android.view.SurfaceHolder;

import android.view.SurfaceView;

public class CameraView extends SurfaceView implements SurfaceHolder.Callback, Camera.PictureCallback {

private SurfaceHolder holder;

private Camera camera;

private boolean af;

public CameraView(Context context) {构造函数

super(context);

holder = getHolder();生成Surface Holder

holder.addCallback(this);

holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);指定Push Buffer

}

public void surfaceCreated(SurfaceHolder holder) {Surface生成事件的处理

try {

camera = Camera.open();摄像头的初始化

camera.setPreviewDisplay(holder);

} catch (Exception e) {

}

}

@Override

public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {Surface改变事件的处理

Camera.Parameters parameters = camera.getParameters();

parameters.setPreviewSize(width, height);

camera.setParameters(parameters);设置参数

camera.startPreview();开始预览

}

public void surfaceDestroyed(SurfaceHolder holder) {Surface销毁时的处理

camera.setPreviewCallback(null);

camera.sPreview();

camera.release();

camera =null;

}

@Override

public boolean onTouchEvent(MotionEvent event) {屏幕触摸事件

if (event.getAction() == MotionEvent.ACTION_DOWN) {按下时自动对焦

camera.autoFocus(null);

af =true;

}

if (event.getAction() == MotionEvent.ACTION_UP af ==true) {放开后拍照

camera.takePicture(null, null, this);

af =false;

}

returntrue;

}

public void onPictureTaken(byte[] data, Camera camera) {拍摄完成后保存照片

try {

String path = Environment.getExternalStorageDirectory() +"/test.jpg";

data2file(data, path);

} catch (Exception e) {

}

camera.startPreview();

}

private void data2file(byte[] w, String fileName) throws Exception {将二进制数据转换为文件的函数

FileOutputStream out =null;

try {

out =new FileOutputStream(fileName);

out.write(w);

out.close();

} catch (Exception e) {

if (out !=null)

out.close();

throw e;

}

}

}

如何调用android 摄像头 拍照

在Android开发过程中,有时需要调用手机自身设备的功能,本文侧重摄像头拍照功能的调用。

:blog.csdn./mahoking/article/details/28225907

怎么调用android的摄像头拍照

我们要调用摄像头的拍照功能,显然

第一步必须加入调用摄像头硬件的权限,拍完照后我们要将图片保存在SD卡中,必须加入SD卡读写权限,所以第一步,我们应该在Android清单文件中加入以下代码

uses-permission android:name="android.permission.CAMERA"/摄像头权限

SD卡读写权限

uses-permissionandroid:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /

uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/

第二步,要将摄像头捕获的图像实时地显示在手机上。

我们是用SurfaceView这个视图组件来实现的,因此在main.xml中加入下列代码

SurfaceView

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:id="@+id/surfaceview"

/

第三步,设置窗口的显示方式

首先获得当前窗口Windowwindow = getWindow();得到窗口

接着设置没有标题requestWindowFeature(Window.FEATURE_NO_TITLE);没有标题

接着设置全屏 window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,

WindowManager.LayoutParams.FLAG_FULLSCREEN);设置全屏

当然,我们在拍照过程中,屏幕必须一致处于高亮状态,因此接着加入下面代码

window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);设置高亮

至此,我们将窗口的显示方式规定死了,然后才能设置窗口上显示的组件(顺序非常重要)

setContentView(R.layout.main);

第四步,设置SurficeView显示控件的属性

找到surficeView

surfaceView = (SurfaceView)findViewById(R.id.surfaceview);

设置它的像素为800x600

surfaceView.getHolder().setFixedSize(800,480);

下面设置surfaceView不维护自己的缓冲区,而是等待屏幕的渲染引擎将内容推送到用户面前

surfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

第五步,就是为surficeView加入回调方法(callBack)

surfaceView.getHolder().addCallback(newSurfaceCallback());

上面的回调类是我们自己定义的,代码如下

private class SurfaceCallback implementsSurfaceHolder.Callback{

@Override

public void surfaceCreated(SurfaceHolderholder) {

try {

camera = Camera.open();打开硬件摄像头,这里导包得时候一定要注意是android.hardware.Camera

WindowManager wm = (WindowManager)getSystemService(Context.WINDOW_SERVICE);得到窗口管理器

Display display = wm.getDefaultDisplay();得到当前屏幕

Camera.Parameters parameters =camera.getParameters();得到摄像头的参数

parameters.setPreviewSize(display.getWidth(),display.getHeight());设置预览照片的大小

parameters.setPreviewFrameRate(3);设置每秒3帧

parameters.setPictureFormat(PixelFormat.JPEG);设置照片的格式

parameters.setJpegQuality(85);设置照片的质量

parameters.setPictureSize(display.getHeight(),display.getWidth());设置照片的大小,默认是和屏幕一样大

camera.setParameters(parameters);

camera.setPreviewDisplay(surfaceView.getHolder());通过SurfaceView显示取景画面

camera.startPreview();开始预览

isPreview = true;设置是否预览参数为真

} catch (IOException e) {

Log.e(TAG, e.toString());

}

}

@Override

public void surfaceChanged(SurfaceHolderholder, int format, int width,

int height) {

TODO Auto-generated method stub

}

@Override

public void surfaceDestroyed(SurfaceHolderholder) {

if(camera!=null){

if(isPreview){如果正在预览

camera.sPreview();

camera.release();

}

}

}

}

第六步,我们必须对按键事件进行监听,如是拍照还是聚焦,代码如下

public boolean onKeyDown(int keyCode,KeyEvent event) {处理按键事件

if(camera!=nullevent.getRepeatCount()==0)代表只按了一下

{

switch(keyCode){

case KeyEvent.KEYCODE_BACK:如果是搜索键

camera.autoFocus(null);自动对焦

break;

case KeyEvent.KEYCODE_DPAD_CENTER:如果是中间键

camera.takePicture(null, null, new TakePictureCallback());将拍到的照片给第三个对象中,这里的TakePictureCallback()是自己定义的,在下面的代码中

break;

}

}

return true;阻止事件往下传递,否则按搜索键会变成系统默认的

}

------------------------------------------------------------------------------------------

private final class TakePictureCallbackimplements PictureCallback{

public void onPictureTaken(byte[] data,Camera camera) {

try {

Bitmap bitmap =BitmapFactory.decodeByteArray(data, 0, data.length);

File file = newFile(Environment.getExternalStorageDirectory(),System.currentTimeMillis()+".jpg");

FileOutputStream outputStream = newFileOutputStream(file);

bitmap.press(CompressFormat.JPEG, 100,outputStream);

outputStream.close();

camera.sPreview();

camera.startPreview();处理完数据之后可以预览

} catch (Exception e) {

Log.e(TAG, e.toString());

}

}

}

注意,代码中有两个回调类,一个是SurfaceCallback(),另外一个是TakePictureCallback(),初学者可能一时难以理解,通俗地讲,前者是用来监视surficeView这个暂时存放图片数据的显示控件的,根据它的显示情况调用不同的方法,包括surfaceCreated(),surfaceChanged(),surfaceDestroyed(),也就不难理解为什么会有这三个回调方法了(注意,在surfaceDestroyed()方法中必须释放摄像头,详细代码参见上方)。TakePictureCallback()是为了监视是否拍照而设计的接口,期中也仅有一个方法,camera将拍照得到的数据传入方法,我们便可以对拍照得到的数据进行进一步处理

vivoxplay只能用前置摄像头,不能用主摄像头

您好!

不能使用主摄像头提示什么呢,请你具体描述一下,以便我们更好的为您解答。

如果有任何问题可以随时来咨询我们的。非常感谢您对我们vivo的支持,祝您生活愉快!

PC camera 摄像头只能用光盘驱动吗?

有的不带盘的摄像头是免驱的,只要XP_SP2就会自认,另外你可以搜搜PC-CAMERA的万能驱动,不行的话还是老实点用盘装

联想A798T拍照怎么只能用前置摄像头呢/如何双摄像头切换

刷机包有问题,你先下载个别的相机看看能不能切换摄像头,或是有没有相关的相机补丁,不行的话你再刷回来就好了。

尊贵的用户,您好:

很抱歉给您带来疑惑了。若您需要切换前后置摄像头,可进入主菜单--相机--点击“+”后面的小相机图标即可切换,请您尝试。

若如果您尝试,没有该切换图标,建议到系统设置--应用程序--拍照--清除数据后试试,同时您也可以下载第三方拍照软件进行尝试,若使用第三方软件也会出现该情况,建议您备份下资料,恢复出厂设置后进行尝试,若依然不行,可抽空带上保修卡或发票联系当地的维修站点检测处理。

官网授权维修站点查询::support1.lenovo../lenovo/wsi/station/servicestation。

感谢您对联想的支持,祝您生活愉快!

求助关于java调用摄像头拍照怎样禁止虚拟摄像头拍照

这个问题和java语言本身没啥关系。首先看你是用什么读取的摄像头来获得照片。

比如说你用flash来读取摄像头获得照片,那么有相关的api获得摄像头列表(此时的摄像头列表是全部的,包括虚拟摄像头的)

但是,你可以读取本地真实的摄像头(bs模式请用ocs控件读取,读取方式参照System.ManagementObject),然后比较真实的摄像头和现在正在拍照使用的摄像头即可。

真实实践过 望采纳。

win7上怎么调用摄像头拍照

打开“我的电脑”

下面应该有个“扫描仪和照相机”

打开你的照相机就可以拍照了

你好,我的手机拍照不知道怎么了,只能用前摄像头,后摄像头不能用,

你可以把手机重启一下试试。

或者你可以从应用宝里面下载个第三方拍照软件。然后拍照看看怎么样。

或者你恢复出厂设置。应该会好很多的。也有可能是你摄像损毁了。

java调用摄像头的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java调用摄像头识别条形码、java调用摄像头的信息别忘了在本站进行查找喔。

The End

发布于:2023-03-22,除非注明,否则均为首码项目网原创文章,转载请注明出处。