您的位置 首页 > u盘教程

手机摄像头驱动开发_手机摄像头驱动开发软件

手机摄像头驱动开发_手机摄像头驱动开发软件

       欢迎大家加入这个手机摄像头驱动开发问题集合的讨论。我将充分利用我的知识和智慧,为每个问题提供深入而细致的回答,希望这能够满足大家的好奇心并促进思考。

1.html5怎样调用手机摄像头或者相册?

2.摄像头怎么驱动

3.如何实现android手机摄像头的的自动对焦

手机摄像头驱动开发_手机摄像头驱动开发软件

html5怎样调用手机摄像头或者相册?

       HTML5技术支持WebApp在手机上拍照,显示在页面上并上传到服务器。这是手机微博应用中常见的功能,当然你也可以在其它类型应用中适当使用此技术。

       1、 视频流

       HTML5 的 The Media Capture(媒体捕捉) API 提供了对摄像头的可编程访问,用户可以直接用 getUserMedia(请注意目前仅Chrome和Opera支持)获得摄像头提供的视频流。我们需要做的是添加一个HTML5 的 Video 标签,并将从摄像头获得的视频作为这个标签的输入来源。

       <video id=”video” autoplay=”"></video>

       <script>

       var video_element=document.getElementById(‘video’);

       if(navigator.getUserMedia){ // opera应使用opera.getUserMedianow

       navigator.getUserMedia(‘video’,success,error); //success是回调函数,当然你也可以直接在此写一个匿名函数

       }

       function success(stream){

       video_element.src=stream;

       }

       </script>

       此时,video 标签内将显示动态的摄像视频流。下面需要进行拍照了。

       2、 拍照

       拍照是采用HTML5的Canvas功能,实时捕获Video标签的内容,因为Video元素可以作为Canvas图像的输入,所以这一点很好实现。主要代码如下:

       var canvas=document.createElement(‘canvas’); //动态创建画布对象

       var ctx=canvas.getContext(’2d’);

       var cw=vw,ch=vh;

       ctx.fillStyle=”#ffffff”;

       ctx.fillRect(0,0,cw,ch);

       ctx.drawImage(video_element,0,0,cw,ch,0,0,vw,vh); //将video对象内指定的区域捕捉绘制到画布上指定的区域,可进行不等大不等位的绘制。

       document.body.append(canvas);

       3、 获取

       从Canvas获取数据的核心思路是用canvas的toDataURL将Canvas的数据转换为base64位编码的PNG图像,类似于“data:image/png;base64,xxxxx”的格式。

       var imgData=canvas.toDataURL(“image/png”);

       这样,imgData变量就存储了一长串的字符数据内容,表示的就是一个PNG图像的base64编码。因为真正的图像数据是base64编码逗号之后的部分,所以要让实际服务器接收的图像数据应该是这部分,我们可以用两种办法来获取。

       第一种:是在前端截取22位以后的字符串作为图像数据,例如:

       var data=imgData.substr(22);

       如果要在上传前获取的大小,可以使用:

       var length=atob(data).length; //atob 可解码用base-64解码的字串

       第二种:是在后端获取传输的数据后用后台语言截取22位以后的字符串(也就是在前台略过上面这步直接上传)。例如PHP里:

       $image=base64_decode(str_replace(‘data:image/jpeg;base64,’,”,$data);

       4、 上传

       在前端可以使用Ajax将上面获得的数据上传到后台脚本。例如使用jQuery时可以用:

       $.post(‘upload.php’,{‘data’:data});

       在后台我们用PHP脚本接收数据并存储为。

       function convert_data($data){

       $image=base64_decode(str_replace(‘data:image/jpeg;base64,’,”,$data);

       save_to_file($image);

       }

       function save_to_file($image){

       $fp=fopen($filename,’w');

       fwrite($fp,$image);

       fclose($fp);

       }

       以上的解决方案不仅能用于Web App拍照上传,也可以通过Canvas的编辑功能函数提供编辑,例如裁剪、上色、涂鸦、圈点等功能,然后把用户编辑完的上传保存到服务器上。

       在还在不断补充修正的HTML5的驱动下,Web App与Native App之间的距离将越来越小。在可预见的不远的未来,越来越多老的和新的开发项目必将会迁移到WEB应用上来。

       相关规范:

       The MediaCapture API:http://www.w3.org/TR/media-capture-api/

       Canvas:http://dev.w3.org/html5/2dcontext/

摄像头怎么驱动

       新买一款飓风ZT988型号手机,包装内无光盘,说明书上说插在电脑上可以做摄像头,但插上之后无法运行,网上所有摄像头驱动都试过了,好像型号不一样,求各位大侠帮帮我

       如果您的手机支持网络摄像头功能,那么在该手机附送的内存卡或光盘上,一定会有该驱动程序!

       可一般手机网络摄像头根本不要你根本不要安装驱动,用数据线连接,在手机上选择网络摄像头即可。如果这样不行电脑会出现“发现新硬件对话框”提示你安装驱动的,把驱动盘插入光驱,让电脑自己搜索安装就是。搞定。如果还不行,我没用过此机恐怕就没办法了,呵呵

如何实现android手机摄像头的的自动对焦

       你这种情况很常见,我以前也一样,朋友送了个摄像头插在自家电脑上用不起,到处找什么“万能摄像头驱动”都没有用。

       后来我摸索出了一个有用的好方法,你试试。

       首先,找到你摄像头的型号,你需要插上摄像头,右键点“我的电脑”-“管理”-“设备管理器”有个**的感叹号你看见了吗,右键点-属性-详细信息-硬件ID(注意是硬件)。这个ID就是你摄像头的型号,你记下这个型号去网上搜索驱动就OK。我的摄像头是海顿,型号是301H,我在网络上搜索就能找到关于“301H”驱动。下载下来安装就可以了。

       但是要注意的是,安装驱动之前你要先卸载原先安装的驱动。

       希望我的回答能对你有帮助。

       参考下面方法

       根据现有的资料有如下几种:

        1 极端人物的做法: 使用一个定时器,设定定时时间,然后不间断的对焦。

        2 极客人物的做法: 那就是利用驱动层实现,但是这个一般人还是算了吧

        3 就本人这样的观察系统的原生相机得知,这东东也没用定时器啊,貌似也不可能复杂到全用驱动来实现,即使底层用的是C 实现,但是理论上讲,google肯定会提供这个封装好东东。于是果断的去查阅 DOC 一看,发现果然有这个东东 : 代码如下

       [java] view plain copy print?

       <strong><span style="font-size:18px">public class MainActivity extends Activity {

        private SurfaceView surfaceView;

        private SurfaceHolder surfaceHolder;

        private boolean flag = false;

        private String fileUrl="";

        Camera camera;

        Camera.Parameters parameters;

        @Override

        protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

       setContentView(R.layout.activity_main);

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

        Button button=(Button) findViewById(R.id.takepicture);

        surfaceHolder = surfaceView.getHolder();

        surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

        surfaceHolder.setKeepScreenOn(true);

        surfaceView.setFocusable(true);

        surfaceView.setBackgroundColor(TRIM_MEMORY_BACKGROUND);

        surfaceHolder.addCallback(new Callback() {

        @Override

        public void surfaceDestroyed(SurfaceHolder holder) {

        // TODO Auto-generated method stub

        camera.stopPreview();

        camera.release();

        camera=null;

        }

        @Override

        public void surfaceCreated(SurfaceHolder holder) {

        // TODO Auto-generated method stub

        if(null==camera){

        camera=Camera.open();

        try {

        camera.setPreviewDisplay(surfaceHolder);

        initCamera();

        camera.startPreview();

        } catch (IOException e) {

        // TODO Auto-generated catch block

        e.printStackTrace();

        }

        }

        }

        @Override

        public void surfaceChanged(SurfaceHolder holder, int format, int width, int height){

        //实现自动对焦

        camera.autoFocus(new AutoFocusCallback() {

        @Override

        public void onAutoFocus(boolean success, Camera camera) {

        if(success){

        initCamera();//实现相机的参数初始化

        camera.cancelAutoFocus();//只有加上了这一句,才会自动对焦。

        }

        }

        });

        }

        });

        }

        //相机参数的初始化设置

        private void initCamera()

        {

        parameters=camera.getParameters();

        parameters.setPictureFormat(PixelFormat.JPEG);

        //parameters.setPictureSize(surfaceView.getWidth(), surfaceView.getHeight()); // 部分定制手机,无法正常识别该方法。

        parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);

        parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);//1连续对焦

        setDispaly(parameters,camera);

        camera.setParameters(parameters);

        camera.startPreview();

        camera.cancelAutoFocus();// 2如果要实现连续的自动对焦,这一句必须加上

        }

        //控制图像的正确显示方向

        private void setDispaly(Camera.Parameters parameters,Camera camera)

        {

        if (Integer.parseInt(Build.VERSION.SDK) >= 8){

        setDisplayOrientation(camera,90);

        }

        else{

        parameters.setRotation(90);

        }

        }

        //实现的图像的正确显示

        private void setDisplayOrientation(Camera camera, int i) {

        Method downPolymorphic;

        try{

        downPolymorphic=camera.getClass().getMethod("setDisplayOrientation", new Class[]{int.class});

        if(downPolymorphic!=null) {

        downPolymorphic.invoke(camera, new Object[]{i});

        }

        }

        catch(Exception e){

        Log.e("Came_e", "图像出错");

        }

        }

       @Override

        public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.

        getMenuInflater().inflate(R.menu.main, menu);

        return true;

        }

       }</span></strong>

       好了,今天关于“手机摄像头驱动开发”的探讨就到这里了。希望大家能够对“手机摄像头驱动开发”有更深入的认识,并且从我的回答中得到一些帮助。

热门文章