java+WebCam 识别二维码

2024-06-07 11:48
文章标签 java 二维码 识别 webcam

本文主要是介绍java+WebCam 识别二维码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

项目中需要用到webcam摄像头去扫描二维码,网上找来相关的Demo拿来用,稍作修改去使用,在调试过程中遇到各种奇葩的错误,最终调试成功,摄像头成功扫描到二维码信息。下面总结一下:
调试过程中遇到的问题基本上是由于缺少java编译是需要的包文件,需要用到一下依赖的包:
webcam-capture-0.3.10.jar
zxing-1.6-core.jar
zxing-javase.jar
slf4j-simple-1.6.1.jar
slf4j-api-1.7.2.jar
bridj-0.7-20140918.jar
如果是在raspberry pi 卡片是电脑上使用还需要加载Driver驱动包,
webcam-capture-driver-v4l4j-0.3.11.jar
v4l4j-0.9.1-r507-sources.jar
此外需要在程序中加入如下代码:

 static { Webcam.setDriver(new V4l4jDriver()); }

如果不加入以上包和代码,程序会报如下错误:
这里写图片描述

依赖包下载连接(here)

代码如下:
WebcamQRDemo.java

import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.image.BufferedImage;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadFactory;import javax.swing.JFrame;
import javax.swing.JTextArea;import com.github.sarxos.webcam.Webcam;
import com.github.sarxos.webcam.WebcamPanel;
import com.github.sarxos.webcam.WebcamResolution;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.LuminanceSource;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.NotFoundException;
import com.google.zxing.Result;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.common.HybridBinarizer;public class WebcamQRDemo extends JFrame implements Runnable, ThreadFactory {private static final long serialVersionUID =6441489157408381878L;
private Executor executor =Executors.newSingleThreadExecutor(this);private Webcam webcam = null;private WebcamPanel wpanel = null;private JTextArea textarea = null;public static void main(String[] args) {// TODO Auto-generated method stubnew WebcamQRDemo();}public WebcamQRDemo() {super();setLayout(new FlowLayout());setTitle("Read QR / Bar Code With Webcam");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);Dimension size = WebcamResolution.QVGA.getSize();webcam = Webcam.getWebcams().get(1);webcam.setViewSize(size);wpanel = new WebcamPanel(webcam);wpanel.setPreferredSize(size);textarea = new JTextArea();textarea.setEditable(false);textarea.setPreferredSize(size);add(wpanel);add(textarea);pack();setVisible(true);executor.execute(this);}@Overridepublic Thread newThread(Runnable r) {// TODO Auto-generated method stubThread t = new Thread(r, "example-runner");t.setDaemon(true);return t;}@Overridepublic void run() {// TODO Auto-generated method stubdo {try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}Result result = null;BufferedImage image = null;if (webcam.isOpen()) {if ((image = webcam.getImage()) == null) {continue;}LuminanceSource source =new BufferedImageLuminanceSource( image) ;BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));try {result = new MultiFormatReader().decode(bitmap);} catch (NotFoundException e) {// fall thru, it means there is no QR code in image}}if (result != null) {textarea.setText(result.getText());System.out.println(result.getText());}} while (true);}}

这篇关于java+WebCam 识别二维码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1039095

相关文章

Spring Boot 实现 IP 限流的原理、实践与利弊解析

《SpringBoot实现IP限流的原理、实践与利弊解析》在SpringBoot中实现IP限流是一种简单而有效的方式来保障系统的稳定性和可用性,本文给大家介绍SpringBoot实现IP限... 目录一、引言二、IP 限流原理2.1 令牌桶算法2.2 漏桶算法三、使用场景3.1 防止恶意攻击3.2 控制资源

Mac系统下卸载JAVA和JDK的步骤

《Mac系统下卸载JAVA和JDK的步骤》JDK是Java语言的软件开发工具包,它提供了开发和运行Java应用程序所需的工具、库和资源,:本文主要介绍Mac系统下卸载JAVA和JDK的相关资料,需... 目录1. 卸载系统自带的 Java 版本检查当前 Java 版本通过命令卸载系统 Java2. 卸载自定

springboot下载接口限速功能实现

《springboot下载接口限速功能实现》通过Redis统计并发数动态调整每个用户带宽,核心逻辑为每秒读取并发送限定数据量,防止单用户占用过多资源,确保整体下载均衡且高效,本文给大家介绍spring... 目录 一、整体目标 二、涉及的主要类/方法✅ 三、核心流程图解(简化) 四、关键代码详解1️⃣ 设置

Java Spring ApplicationEvent 代码示例解析

《JavaSpringApplicationEvent代码示例解析》本文解析了Spring事件机制,涵盖核心概念(发布-订阅/观察者模式)、代码实现(事件定义、发布、监听)及高级应用(异步处理、... 目录一、Spring 事件机制核心概念1. 事件驱动架构模型2. 核心组件二、代码示例解析1. 事件定义

Python中图片与PDF识别文本(OCR)的全面指南

《Python中图片与PDF识别文本(OCR)的全面指南》在数据爆炸时代,80%的企业数据以非结构化形式存在,其中PDF和图像是最主要的载体,本文将深入探索Python中OCR技术如何将这些数字纸张转... 目录一、OCR技术核心原理二、python图像识别四大工具库1. Pytesseract - 经典O

SpringMVC高效获取JavaBean对象指南

《SpringMVC高效获取JavaBean对象指南》SpringMVC通过数据绑定自动将请求参数映射到JavaBean,支持表单、URL及JSON数据,需用@ModelAttribute、@Requ... 目录Spring MVC 获取 JavaBean 对象指南核心机制:数据绑定实现步骤1. 定义 Ja

javax.net.ssl.SSLHandshakeException:异常原因及解决方案

《javax.net.ssl.SSLHandshakeException:异常原因及解决方案》javax.net.ssl.SSLHandshakeException是一个SSL握手异常,通常在建立SS... 目录报错原因在程序中绕过服务器的安全验证注意点最后多说一句报错原因一般出现这种问题是因为目标服务器

Java实现删除文件中的指定内容

《Java实现删除文件中的指定内容》在日常开发中,经常需要对文本文件进行批量处理,其中,删除文件中指定内容是最常见的需求之一,下面我们就来看看如何使用java实现删除文件中的指定内容吧... 目录1. 项目背景详细介绍2. 项目需求详细介绍2.1 功能需求2.2 非功能需求3. 相关技术详细介绍3.1 Ja

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再

spring中的ImportSelector接口示例详解

《spring中的ImportSelector接口示例详解》Spring的ImportSelector接口用于动态选择配置类,实现条件化和模块化配置,关键方法selectImports根据注解信息返回... 目录一、核心作用二、关键方法三、扩展功能四、使用示例五、工作原理六、应用场景七、自定义实现Impor