最近公司有一个需求,使用UVC摄像头,拍照识别图中的二维码。

关于UVC请看:mirrors / liuguihong / androiduvccamera · GitCode

步骤如下:

1.添加依赖

  implementation 'com.yanzhenjie.zbar:camera:1.0.0'implementation 'com.google.zxing:core:3.3.3'implementation 'com.github.Liuguihong:AndroidUVCCamera:1.0.0'

2.在布局XML中加入View

<TextureViewandroid:id="@+id/textureView"android:layout_width="650dp"android:layout_height="450dp"
/>

3.初始化UVC摄像头,并预览。

UVCCameraProxy mUVCCamera;
 @SuppressLint("StaticFieldLeak")private void onCamera() {mUVCCamera = new UVCCameraProxy(this);mUVCCamera.getConfig().isDebug(true) // 是否调试.setPicturePath(PicturePath.SDCARD) // 图片保存路径,保存在app缓存还是sd卡.setDirName("xxx/Img") // 图片保存目录名称.setProductId(0) // 产品id,用于过滤设备,不需要可不设置.setVendorId(0); // 供应商id,用于过滤设备,不需要可不设置mUVCCamera.setPreviewTexture(binding.QRSettingActivityTextureView);//设置布局中的ViewmUVCCamera.setConnectCallback(new ConnectCallback() {@Overridepublic void onAttached(UsbDevice usbDevice) {Log.e(TAG, "onAttached: ");mUVCCamera.requestPermission(usbDevice); // USB设备授权}@Overridepublic void onGranted(UsbDevice usbDevice, boolean granted) {Log.e(TAG, "onGranted: ");if (granted) {mUVCCamera.connectDevice(usbDevice); // 连接USB设备}}@Overridepublic void onConnected(UsbDevice usbDevice) {Log.e(TAG, "打开相机: ");mUVCCamera.openCamera(); // 打开相机}@Overridepublic void onCameraOpened() {Log.e(TAG, "开始预览: ");mUVCCamera.setPreviewRotation(90);//旋转90°mUVCCamera.setPreviewSize(1600, 1200); // 设置预览尺寸mUVCCamera.startPreview(); // 开始预览}@Overridepublic void onDetached(UsbDevice usbDevice) {Log.e(TAG, "关闭相机: ");mUVCCamera.closeCamera(); // 关闭相机}});//拍照回调mUVCCamera.setPictureTakenCallback(new PictureCallback() {@Overridepublic void onPictureTaken(String path) {try {recognitionBitmap(path); //识别图片} catch (Exception e) {Log.e(TAG, "onPictureTaken: " + e.toString());}}});}

//拍照API

mUVCCamera.takePicture();//拍照

4.识别图片recognitionBitmap (我是把一张含有二维码的图片,根据坐标返回一张只有二维码的图片进行识别,提高识别率)

    /*** 识别图片信息** @param path 路径*/private void recognitionBitmap(String path) {Bitmap bitmap = getBitmap(path);int x = 330;//330int y = 290;//290int w = 590;//590int h = 620;//620//根据坐标截图二维码,方便后续的二维码识别Bitmap reagentBmp = Bitmap.createBitmap(bitmap, x,y, w,h);//zbar 二维码识别int width = reagentBmp.getWidth();int height = reagentBmp.getHeight();int[] pixels = new int[width * height];reagentBmp.getPixels(pixels, 0, width, 0, 0, width, height);Image barcode = new Image(width, height, "RGB4");barcode.setData(pixels);ImageScanner mScanner = new ImageScanner();int result = mScanner.scanImage(barcode.convert("Y800"));//扫码成功if (result != 0) {String decodeResult = "";Log.e("deocde-->", "zbar-OK");SymbolSet syms = mScanner.getResults();for (Symbol sym : syms) {decodeResult = sym.getData();}
//打印二维码数据Log.e(TAG, "onPictureTaken: ImageScanner  " + decodeResult);} else {//扫码失败Log.e("deocde-->", "zbar-error");}}
  /*** @param path 图片路径* @return*/public static Bitmap getBitmap(String path) {Bitmap bitmap = null;try {//获取计算的图片, 需要设置inScaled=false不改变导入图像的照片BitmapFactory.Options bfoOptions = new BitmapFactory.Options();bfoOptions.inScaled = false;bitmap = BitmapFactory.decodeFile(path, bfoOptions);} catch (Exception e) {}return bitmap;}

使用UVCCamera拍照后zbar与zxing识别图片中的二维码相关推荐

  1. 如何使用Python识别图片中的二维码

    如何使用Python识别图片中的二维码 二维码是一种方便快捷的信息传递方式,它们广泛应用于电子商务.广告和其他领域.在许多情况下,我们需要识别图片中的二维码,以便从中获取信息.Python是一种流行的 ...

  2. JavaCV进阶opencv图像处理:10行代码快速实现扫描识别图片中的二维码

    人脸检测识别 javacv进阶opencv图像检测/识别系列目录 人脸检测识别 JavaCV进阶opencv图像处理:摄像头图像人脸检测 JavaCV进阶opencv图像处理:ffmpeg视频图像画面 ...

  3. python使用pyzbar批量识别图片中的二维码

    欢迎关注原创视频教程 Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.c ...

  4. Zxing 识别反色二维码

    原理其实很简单就是对YUV颜色取反, 255 - color & 0xff, 笔者起初想法是通过改变源码中BitMatrix类中的值来实现, 无奈流程过于复杂以失败告终,最后发现还是得从源头出 ...

  5. python识别图片中的二维码_python3+pyzbar+Image 进行图片二维码识别

    1.前言 最近公司有个项目要写个程序自动识别客户提交照片里的二维码,一接到这个任务马上就想到了用Python这个万能的工具! 2.搜寻 首先在网上到处找了很多"灵感",看看其他人都 ...

  6. 使用zxing 解析图片中的二维码

    前言 扫描上传图片中的二维码进行内容解析 提示:以下是本篇文章正文内容,下面案例可供参考 使用步骤 1.先在本地创建文件夹存储图片 代码如下(示例): String path = request.ge ...

  7. Opencv+ZBar识别条形码、二维码

    文章目录 Opencv识别条形码.二维码 1.ZBar环境配置 2.一维码(条形码)识别 3. 二维码的识别 4. Opencv识别二维码 结束 Opencv识别条形码.二维码 最近的一次作业,恰好之 ...

  8. 解决Zxing解析本地图片二维码,识别率低,识别不出来的问题!

    (又做了一些优化,就是在原来的基础上添加上了zbar识别二维码的功能,就是先对图片进行处理,然后通过zxing识别,如果zxing识别失败,再通过zbar识别 20170329) 最近项目里让添加本地 ...

  9. 用不同的QR Code识别库实现二维码的识别(第一篇:opencv 和BoofCV)

    最近有个项目需要实现二维码的识别和摄像头的数据采集.在开始正式项目之前,我决定用python写几行简单的代码来测试每个库的识别效果.这次没有连续测量,也没有使用多线程识别.只是简单的测试了每个二维码的 ...

最新文章

  1. 【AI】caffe源码分析(一)
  2. SpringMVC项目前台利用ajaxFileUpload传递图片后台接收
  3. 一口气发布1008种机器翻译模型,GitHub最火NLP项目大更新
  4. 云原生生态周报 Vol. 19 | Helm 推荐用户转向 V3
  5. angularJs中ngModel的坑
  6. 豆瓣最高评分8.9!让你拥有“多样性思维”
  7. 10-2 5-2 查询至少生产两种不同的计算机(PC或便携式电脑)且机器速度至少为133的厂商 (20 分)(思路加详解+测试用例)
  8. windows调用python_windows 快捷调用Python语言
  9. Java并发编程之AbstractQueuedSynchronizer(AQS)源码解析
  10. Java @SafeVarargs注解
  11. mysql实现点赞和取消_Redis是如何实现点赞、取消点赞的?
  12. LeetCode刷题(21)
  13. Linux -单用户模式(忘记Linux的root密码)
  14. jde多目标_《和平精英》PEL职业联赛S3赛季:DKG战队获第四周周冠军,JDE“逆风翻盘”...
  15. ad gerber文件生成_Gerber竟然可以倒转PCB文件!!!
  16. c#获取本地ip地址网关子网掩码_C#设置本地网络如DNS、网关、子网掩码、IP等等...
  17. 第32课 - 初探C++ 标准库
  18. java jsp交友系统_Jsp+Servlet+Javabean网络交友程序设计+源代码
  19. Jboss的下载和安装
  20. Golang 高效编程 分号的使用 与 风格

热门文章

  1. 虚幻属性系统(反射)
  2. -moz-zoom-in 和-moz-zoom-out
  3. 6个Python数据分析神器~
  4. 喧喧发布 2.5.1 版本,支持移动版和桌面端同时登录
  5. ubuntu ibus-中文输入法
  6. 用计算机打出来自天堂的魔鬼抖音,抖音来自天堂的魔鬼卡点视频教程
  7. 透过脉脉的新闻“线”场看职场
  8. PHP设计模式-简单工厂方法
  9. [漫画]120430 混血男孩
  10. 从七十年代到现在软件架构的思想变化