android pc摄像头驱动,Android 驱动USB摄像头

最近有个需求,要用android 来驱动外部usb摄像头。emmmmmmm......  港真,突然听到这么个需求,有点蒙~~于是google github转有没有类似需求的文章。诶嘿 还真有。 还有开源的项目。项目地址:传送门。

事前要检测摄像头是不是好用。这个apk能直接驱动usb摄像头。 下载链接: 传送门 。但是这个apk找不到源码诶。

接下来就按照readme中的介绍开始测试demo。好久不用eclipse啦  就只用android studio(AS)做的测试

1.git或者直接下载zip 把源码搞到本地。然后用AS打开项目。划重点了。。项目要配合NDK。ndk的配置方法大家自行搜索,本文就不在多说这块内容。

在AS内打开项目后。会有多个usbCameraTest 的module。 每个mudule 里面有不同的内容,拍照、 视频、设置亮度等等。但是一般能拿到摄像头的预览内容 剩下的都好说了。

2.接下来 随便run个module 开始测试能不能驱动自己的测试摄像头。我选的usbCameraTest3来做的测试。

期间遇到的问题

1.ndk版本要用r14 的如果用其他版本的会有各种莫名其妙的问题。用r14版本就稳了。我用的是r14b的版本。下载地址:传送门。

2.点击页面上的开关button 报错 could not open camera:err=-1  。  在libuvccamera/src/main/jni/Application.mk 中 将NDK_TOOLCHAIN_VERSION := 4.9 的注释放开后,重新编译。

3.再次点击页面上的开关button。页面还不出preview。依旧一片黑。咋子个问题哦。。这时候 注意logcat里面的输出问题。

7c5f0ede3a59?from=timeline@

这是摄像头支持的分辨率,但是在java代码中默认设置的是:

7c5f0ede3a59?from=timeline@

这项目中默认的 宽高比好像和摄像头支持的不一样诶。emmm 是真的不一样。将项目中的宽高比改为摄像头支持的随便一组。再次尝试运行~~~~。bingo~~preview成功出来了。。撒花撒花。

等等等等~~

preview确实出来了。但是需求可不是单单纯纯的看就完事儿了。。我们需要视频的二进制流来做图像处理才行啊。

在源码中继续翻。在AbstractUVCCameraHandler 类中 找到了

7c5f0ede3a59?from=timeline@

曙光就在眼前了。将这ByteBuffer 转成byte[] 。 做图像的基本数据格式就满足了。将该方法改造下。放到自己需要的地方做个回调。需要的数据就出来了。

我是用着数据做人脸分析的。把数据放进去 图像中其实是有人脸的,但是分析人脸的接口返回的数据是没人脸。。。。。。脑袋一晃  发现这事儿没这么简单。 人脸识别的api 需要 二进制流的灰度图(NV21格式数据)。但是摄像头出的数据是不是NV21格式的呢???? 在AbstractUVCCameraHandler 类中。

7c5f0ede3a59?from=timeline@

哇 真滴是 ~~~找这设置图像输出格式真是费了老鼻子劲儿了。在这设置成NV21 格式就好了。

在这还有个坑。第一家人脸识别sdk用 YUV420SP格式的输出数据能做识别。第二家人脸识别sdk就需要NV21 格式的了。在次 用usb摄像头做识别的同学要注意了。

到此~~需求的基本内容算是搞定了。。。奖励自己下 晚饭加个肯德基手枪腿!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值