解决方案 »

  1.   

    自己顶!!!跪求各位大神指明道路啊!!
    在网上找了好久找不到相关的参考,找到过一个通过usb调用摄像头的代码: 
            https://bitbucket.org/neuralassembly/simplewebcam/src/5ccc6c5b94b1?at=master 
           但是不知道在android里面通过jni调用本机摄像头的话该通过什么接口,也不清楚手机本身的摄像头的设备名称应该是什么
      

  2.   

    非常感谢您的回复!!不过请问您说的“打开设备的操作”是指什么?open啊 搜下linux 打开摄像头
    http://blog.csdn.net/eastmoon502136/article/details/8190262
      

  3.   

    直接访问设备不可行的,app没权限的。
    “Camera取象加上图像在Java和本地代码之间传递要花300ms左右”,你是怎么传递图像数据的?
    我觉得是你的app在这个地方设计有问题。
      

  4.   

    "图像在Java和本地代码之间传递"你可以从这方面着手,其实并不需要把数据传到jni层,只需要在jni层开辟一块内存,java层获取camera数据后直接写内存然后通知jni读就行了 
      

  5.   

    从onPreviewFrame获取yuv数据传递给JNI,再用FFMPEG编码成h264,我测试的结果平均在100ms左右。
      

  6.   


    哦哦,我好好想了一下您说的这个,我现在把本地函数写成了
    public static native int[] grayProc(int[] pixels, int w, int h);
    这个样子,应该就是把地址告诉了本地代码,并且把存储长度告诉它了,对吧?本人对编程的理解还比较浅,见谅哈。。
      

  7.   

    这个部分我已经实现的,图像数据是作为函数参数传递到本地代码的~现在对处理速度要求有些高,所以想能不能不传递图像数据,直接从本地代码获取图像,然后本地代码自己处理。
    你是用onpreviewframe来获取图像数据的?preview的数据,从camerahal传递到app这边,copy了多次,效率是很低的。
    最快的方法应该是直接用surfaceTexture,把surfaceTexture传给camera,这样你可以直接通过surfaceTexture来访问到图像数据,然后去处理。
      

  8.   

    您好,大神,你的问题解决了吗?我刚好也在做opencv移植到android上读摄像头的问题,但是读摄像头不会,能指点吗 谢谢