使用UVCCamera拍照后zbar与zxing识别图片中的二维码
最近公司有一个需求,使用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识别图片中的二维码相关推荐
- 如何使用Python识别图片中的二维码
如何使用Python识别图片中的二维码 二维码是一种方便快捷的信息传递方式,它们广泛应用于电子商务.广告和其他领域.在许多情况下,我们需要识别图片中的二维码,以便从中获取信息.Python是一种流行的 ...
- JavaCV进阶opencv图像处理:10行代码快速实现扫描识别图片中的二维码
人脸检测识别 javacv进阶opencv图像检测/识别系列目录 人脸检测识别 JavaCV进阶opencv图像处理:摄像头图像人脸检测 JavaCV进阶opencv图像处理:ffmpeg视频图像画面 ...
- python使用pyzbar批量识别图片中的二维码
欢迎关注原创视频教程 Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.c ...
- Zxing 识别反色二维码
原理其实很简单就是对YUV颜色取反, 255 - color & 0xff, 笔者起初想法是通过改变源码中BitMatrix类中的值来实现, 无奈流程过于复杂以失败告终,最后发现还是得从源头出 ...
- python识别图片中的二维码_python3+pyzbar+Image 进行图片二维码识别
1.前言 最近公司有个项目要写个程序自动识别客户提交照片里的二维码,一接到这个任务马上就想到了用Python这个万能的工具! 2.搜寻 首先在网上到处找了很多"灵感",看看其他人都 ...
- 使用zxing 解析图片中的二维码
前言 扫描上传图片中的二维码进行内容解析 提示:以下是本篇文章正文内容,下面案例可供参考 使用步骤 1.先在本地创建文件夹存储图片 代码如下(示例): String path = request.ge ...
- Opencv+ZBar识别条形码、二维码
文章目录 Opencv识别条形码.二维码 1.ZBar环境配置 2.一维码(条形码)识别 3. 二维码的识别 4. Opencv识别二维码 结束 Opencv识别条形码.二维码 最近的一次作业,恰好之 ...
- 解决Zxing解析本地图片二维码,识别率低,识别不出来的问题!
(又做了一些优化,就是在原来的基础上添加上了zbar识别二维码的功能,就是先对图片进行处理,然后通过zxing识别,如果zxing识别失败,再通过zbar识别 20170329) 最近项目里让添加本地 ...
- 用不同的QR Code识别库实现二维码的识别(第一篇:opencv 和BoofCV)
最近有个项目需要实现二维码的识别和摄像头的数据采集.在开始正式项目之前,我决定用python写几行简单的代码来测试每个库的识别效果.这次没有连续测量,也没有使用多线程识别.只是简单的测试了每个二维码的 ...
最新文章
- 【AI】caffe源码分析(一)
- SpringMVC项目前台利用ajaxFileUpload传递图片后台接收
- 一口气发布1008种机器翻译模型,GitHub最火NLP项目大更新
- 云原生生态周报 Vol. 19 | Helm 推荐用户转向 V3
- angularJs中ngModel的坑
- 豆瓣最高评分8.9!让你拥有“多样性思维”
- 10-2 5-2 查询至少生产两种不同的计算机(PC或便携式电脑)且机器速度至少为133的厂商 (20 分)(思路加详解+测试用例)
- windows调用python_windows 快捷调用Python语言
- Java并发编程之AbstractQueuedSynchronizer(AQS)源码解析
- Java @SafeVarargs注解
- mysql实现点赞和取消_Redis是如何实现点赞、取消点赞的?
- LeetCode刷题(21)
- Linux -单用户模式(忘记Linux的root密码)
- jde多目标_《和平精英》PEL职业联赛S3赛季:DKG战队获第四周周冠军,JDE“逆风翻盘”...
- ad gerber文件生成_Gerber竟然可以倒转PCB文件!!!
- c#获取本地ip地址网关子网掩码_C#设置本地网络如DNS、网关、子网掩码、IP等等...
- 第32课 - 初探C++ 标准库
- java jsp交友系统_Jsp+Servlet+Javabean网络交友程序设计+源代码
- Jboss的下载和安装
- Golang 高效编程 分号的使用 与 风格