java使用电脑摄像头识别二维码

 更新时间:2018年10月16日 10:54:20   作者:a19880813  
这篇文章主要为大家详细介绍了java使用电脑摄像头识别二维码,从摄像头获取图像,再根据图片解析出二维码信息,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了java使用电脑摄像头识别二维码的具体代码,供大家参考,具体内容如下

要想摄像头识别二维码,需要两个基本功能:

1、从摄像头获取图像,2、根据图片解析出二维码信息。

在上一篇java摄像头截图已经实现了摄像头截图,只要再加上zxing(或其它能从图片中解析二维码的组件),就能从图像中解析出二维码,实现代码如下:

package com.pengo.capture;

import javax.swing.JFrame;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.InputStream;
import javax.media.MediaLocator;
import javax.swing.JPanel;
import javazoom.jl.player.Player;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.LuminanceSource;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.Result;
import com.google.zxing.common.HybridBinarizer;
 
import net.sf.fmj.ui.application.CaptureDeviceBrowser;
import net.sf.fmj.ui.application.ContainerPlayer;
import net.sf.fmj.ui.application.PlayerPanelPrefs;
public class CameraFrame2 extends JFrame{
  private static int num = 0;
  public CameraFrame2() throws Exception{
   this.setTitle("摄像头截图应用");
   this.setSize(480, 500);
   this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   final JPanel cameraPanel = new JPanel();
   this.getContentPane().setLayout(new BorderLayout());
   this.getContentPane().add(cameraPanel, BorderLayout.CENTER);
   ContainerPlayer containerPlayer = new ContainerPlayer(cameraPanel);
   MediaLocator locator = CaptureDeviceBrowser.run(null); //弹出摄像头设备选择
 
   PlayerPanelPrefs prefs = new PlayerPanelPrefs();
   containerPlayer.setMediaLocation(locator.toExternalForm(), prefs.autoPlay);
   
   new Thread() {
    public void run() {
     while (true) {
      try {
      Thread.sleep(1000);
       Dimension imageSize = cameraPanel.getSize();
       BufferedImage image = new BufferedImage(
         imageSize.width, imageSize.height,
         BufferedImage.TYPE_INT_ARGB);
       Graphics2D g = image.createGraphics();
       cameraPanel.paint(g);
       g.dispose();
       LuminanceSource source = new BufferedImageLuminanceSource(
         image);
       BinaryBitmap bitmap = new BinaryBitmap(
        new HybridBinarizer(source));
       Result result;
       result = new MultiFormatReader().decode(bitmap);
       System.out.println("二维码====:" + result.getText());
       InputStream is = CameraFrame.class.getClassLoader().getResourceAsStream("resource/beep.mp3");
       Player player = new Player(is);
       player.play();
      } catch (Exception re) {
       re.printStackTrace();
      }
     }
    }
   }.start();
  }
  
  public static void main(String[] args) throws Exception{
   CameraFrame2 camera = new CameraFrame2();
   camera.setVisible(true);
  }
 }

最后来张效果图(本图仅供参考)


要想识别效果好点,摄像头像素最好500W以上,活动二维码签到、物品扫描,只需扛台手提,再加个高清摄像头就行了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 浅谈Java double 相乘的结果偏差小问题

    浅谈Java double 相乘的结果偏差小问题

    下面小编就为大家带来一篇浅谈Java double 相乘的结果偏差小问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • springboot3请求参数种类及接口测试案例小结

    springboot3请求参数种类及接口测试案例小结

    这篇文章主要介绍了springboot3请求参数种类及接口测试案例小结,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-10-10
  • Idea中maven项目实现登录验证码功能

    Idea中maven项目实现登录验证码功能

    这篇文章主要介绍了Idea中maven项目实现登录验证码功能,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • 详解Spring Cloud中Hystrix 线程隔离导致ThreadLocal数据丢失

    详解Spring Cloud中Hystrix 线程隔离导致ThreadLocal数据丢失

    这篇文章主要介绍了详解Spring Cloud中Hystrix 线程隔离导致ThreadLocal数据丢失,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • 学习Java的static与final关键字

    学习Java的static与final关键字

    本篇文章给大家详细分析了Java的static与final关键字知识点以及相关代码分享,有需要的读者跟着学习下吧。
    2018-03-03
  • Spring Bean注册与注入实现方法详解

    Spring Bean注册与注入实现方法详解

    首先,要学习Spring中的Bean的注入方式,就要先了解什么是依赖注入。依赖注入是指:让调用类对某一接口的实现类的实现类的依赖关系由第三方注入,以此来消除调用类对某一接口实现类的依赖。Spring容器中支持的依赖注入方式主要有属性注入、构造函数注入、工厂方法注入
    2022-10-10
  • SpringBoot2.4.2下使用Redis配置Lettuce的示例

    SpringBoot2.4.2下使用Redis配置Lettuce的示例

    这篇文章主要介绍了SpringBoot2.4.2下使用Redis配置Lettuce,Springboot2.4.2下默认使用的就是Lettuce而不是Jedis因此无需在依赖进行排除Jedis,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2022-01-01
  • java定时任务实现的4种方式小结

    java定时任务实现的4种方式小结

    这篇文章主要介绍了java定时任务实现的4种方式小结,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • idea插件之mybatis log plugin控制台sql的问题

    idea插件之mybatis log plugin控制台sql的问题

    这篇文章主要介绍了idea插件之mybatis log plugin控制台sql,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • java递归算法的实例详解

    java递归算法的实例详解

    在本篇文章里小编给大家整理了关于java递归算法的实例内容,以及相关知识点总结,需要的朋友们可以学习下。
    2020-02-02

最新评论