使用电脑摄像头识别二维码
来源:互联网 发布:js点击顺序切换div内容 编辑:程序博客网 时间:2024/04/29 01:49
要想摄像头识别二维码,需要两个基本功能:1、从摄像头获取图像,2、根据图片解析出二维码信息。在上一篇java摄像头截图已经实现了摄像头截图,只要再加上zxing(或其它能从图片中解析二维码的组件),就能从图像中解析出二维码,实现代码如下:
1 package com.pengo.capture;
2
3 import javax.swing.JFrame;
4 import java.awt.BorderLayout;
5 import java.awt.Dimension;
6 import java.awt.Graphics2D;
7 import java.awt.image.BufferedImage;
8 import java.io.InputStream;
9 import javax.media.MediaLocator;
10 import javax.swing.JPanel;
11 import javazoom.jl.player.Player;
12 import com.google.zxing.BinaryBitmap;
13 import com.google.zxing.LuminanceSource;
14 import com.google.zxing.MultiFormatReader;
15 import com.google.zxing.Result;
16 import com.google.zxing.common.HybridBinarizer;
17
18 import net.sf.fmj.ui.application.CaptureDeviceBrowser;
19 import net.sf.fmj.ui.application.ContainerPlayer;
20 import net.sf.fmj.ui.application.PlayerPanelPrefs;
21 public class CameraFrame2 extends JFrame{
22 private static int num = 0;
23 public CameraFrame2() throws Exception{
24 this.setTitle("摄像头截图应用");
25 this.setSize(480, 500);
26 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
27 final JPanel cameraPanel = new JPanel();
28 this.getContentPane().setLayout(new BorderLayout());
29 this.getContentPane().add(cameraPanel, BorderLayout.CENTER);
30 ContainerPlayer containerPlayer = new ContainerPlayer(cameraPanel);
31 MediaLocator locator = CaptureDeviceBrowser.run(null); //弹出摄像头设备选择
32
33 PlayerPanelPrefs prefs = new PlayerPanelPrefs();
34 containerPlayer.setMediaLocation(locator.toExternalForm(), prefs.autoPlay);
35
36 new Thread() {
37 public void run() {
38 while (true) {
39 try {
40 Thread.sleep(1000);
41 Dimension imageSize = cameraPanel.getSize();
42 BufferedImage image = new BufferedImage(
43 imageSize.width, imageSize.height,
44 BufferedImage.TYPE_INT_ARGB);
45 Graphics2D g = image.createGraphics();
46 cameraPanel.paint(g);
47 g.dispose();
48 LuminanceSource source = new BufferedImageLuminanceSource(
49 image);
50 BinaryBitmap bitmap = new BinaryBitmap(
51 new HybridBinarizer(source));
52 Result result;
53 result = new MultiFormatReader().decode(bitmap);
54 System.out.println("二维码====:" + result.getText());
55 InputStream is = CameraFrame.class.getClassLoader().getResourceAsStream("resource/beep.mp3");
56 Player player = new Player(is);
57 player.play();
58 } catch (Exception re) {
59 re.printStackTrace();
60 }
61 }
62 }
63 }.start();
64 }
65
66 public static void main(String[] args) throws Exception{
67 CameraFrame2 camera = new CameraFrame2();
68 camera.setVisible(true);
69 }
70 }
2
3 import javax.swing.JFrame;
4 import java.awt.BorderLayout;
5 import java.awt.Dimension;
6 import java.awt.Graphics2D;
7 import java.awt.image.BufferedImage;
8 import java.io.InputStream;
9 import javax.media.MediaLocator;
10 import javax.swing.JPanel;
11 import javazoom.jl.player.Player;
12 import com.google.zxing.BinaryBitmap;
13 import com.google.zxing.LuminanceSource;
14 import com.google.zxing.MultiFormatReader;
15 import com.google.zxing.Result;
16 import com.google.zxing.common.HybridBinarizer;
17
18 import net.sf.fmj.ui.application.CaptureDeviceBrowser;
19 import net.sf.fmj.ui.application.ContainerPlayer;
20 import net.sf.fmj.ui.application.PlayerPanelPrefs;
21 public class CameraFrame2 extends JFrame{
22 private static int num = 0;
23 public CameraFrame2() throws Exception{
24 this.setTitle("摄像头截图应用");
25 this.setSize(480, 500);
26 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
27 final JPanel cameraPanel = new JPanel();
28 this.getContentPane().setLayout(new BorderLayout());
29 this.getContentPane().add(cameraPanel, BorderLayout.CENTER);
30 ContainerPlayer containerPlayer = new ContainerPlayer(cameraPanel);
31 MediaLocator locator = CaptureDeviceBrowser.run(null); //弹出摄像头设备选择
32
33 PlayerPanelPrefs prefs = new PlayerPanelPrefs();
34 containerPlayer.setMediaLocation(locator.toExternalForm(), prefs.autoPlay);
35
36 new Thread() {
37 public void run() {
38 while (true) {
39 try {
40 Thread.sleep(1000);
41 Dimension imageSize = cameraPanel.getSize();
42 BufferedImage image = new BufferedImage(
43 imageSize.width, imageSize.height,
44 BufferedImage.TYPE_INT_ARGB);
45 Graphics2D g = image.createGraphics();
46 cameraPanel.paint(g);
47 g.dispose();
48 LuminanceSource source = new BufferedImageLuminanceSource(
49 image);
50 BinaryBitmap bitmap = new BinaryBitmap(
51 new HybridBinarizer(source));
52 Result result;
53 result = new MultiFormatReader().decode(bitmap);
54 System.out.println("二维码====:" + result.getText());
55 InputStream is = CameraFrame.class.getClassLoader().getResourceAsStream("resource/beep.mp3");
56 Player player = new Player(is);
57 player.play();
58 } catch (Exception re) {
59 re.printStackTrace();
60 }
61 }
62 }
63 }.start();
64 }
65
66 public static void main(String[] args) throws Exception{
67 CameraFrame2 camera = new CameraFrame2();
68 camera.setVisible(true);
69 }
70 }
最后来张效果图(本图仅供参考)
要想识别效果好点,摄像头像素最好500W以上,
0 0
- 使用电脑摄像头识别二维码
- USB摄像头预览识别二维码
- USB摄像头预览识别二维码
- 能在Windows CE上运行的的二维码识别系统,使用手机摄像头扫描二维码
- 树莓派自带摄像头OpenCV图像识别-二维码识别
- 如何使用电脑扫描二维码
- 使用QZXing识别图片二维码
- 树莓派(Debian系统)通过usb摄像头扫描识别QR二维码
- 手机摄像头当做电脑摄像头使用-用于视频聊天
- 台式机电脑使用手机摄像头出现问题
- 二维码--识别
- 识别二维码
- 二维码识别
- 生成二维码、识别二维码
- iOS AV Foundation 二维码扫描 01 使用摄像头
- 在树莓派(Debian系统)上通过usb摄像头扫描识别QR二维码
- 在树莓派(Debian系统)上通过usb摄像头扫描识别QR二维码
- python服务程序(调用摄像头查看视频和识别二维码)+ Android 客户端程序
- 天龙八部sf家族排名 健康美食,丰胸健康又安全_39健康网_女性
- C++复习笔记01
- Android系统源码学习步骤
- 微信平台网页授权获取用户基本信息
- 奇迹私服ip 四项运动让乳房变漂亮_39健康网_女性
- 使用电脑摄像头识别二维码
- 深刻理解Python中的元类(metaclass)
- linux下C和shell调用的popen函数
- Android源码下载及开发环境的搭建
- poj1664 放苹果(递归)
- OS X 键盘快捷键
- 辅助性的“比较操作符”
- 暑期 Web开发 02
- 计算机常识--框架、编程语言篇