Java 如何扫描直到连续获得有效的QR码,解码,通过网络摄像头将其放入JLabel

Java 如何扫描直到连续获得有效的QR码,解码,通过网络摄像头将其放入JLabel,java,webcam,qr-code,Java,Webcam,Qr Code,我希望通过网络摄像头扫描QR码,解码并将其放置在JLabel上。扫描仪应连续扫描,直到获得有效的QR码。我正在使用eclipse,有人能告诉我正确的方向吗 已尝试的网站: - http://shashindrasri.blogspot.sg/2013_01_01_archive.html - http://webcam-capture.sarxos.pl/ - & many more 我遵循建议,我能得到的最接近的结果如下,这给了我类似的错误: - java.lang.Unsuppor

我希望通过网络摄像头扫描QR码,解码并将其放置在JLabel上。扫描仪应连续扫描,直到获得有效的QR码。我正在使用eclipse,有人能告诉我正确的方向吗

已尝试的网站:

- http://shashindrasri.blogspot.sg/2013_01_01_archive.html
- http://webcam-capture.sarxos.pl/
- & many more
我遵循建议,我能得到的最接近的结果如下,这给了我类似的错误:

- java.lang.UnsupportedClassVersionError: com/google/zxing/NotFoundException : Unsupported major.minor version 51.0
- Could not find the main class: boundary.Scanner. Program will exit.
- Exception in thread "Thread-3" java.lang.UnsatisfiedLinkError: C:\Users\Safety.Puss-HP\AppData\Local\Temp\javacpp403997126115\jniopencv_core.dll: Can't find dependent libraries
我做到了:

- webcam-capture-0.3.10-RC4
- slf4j-api-1.7.2
- bridj-0.7-20130703.103049-42
守则:

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 Scanner extends JFrame implements Runnable, ThreadFactory
{
        private static final long serialVersionUID = 6441489157408381878L;
        private Executor executor = Executors.newSingleThreadExecutor(this);
        private Webcam webcam = null;
        private WebcamPanel panel = null;
        private JTextArea textarea = null;

        public Scanner() {
                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(0);
                webcam.setViewSize(size);

                panel = new WebcamPanel(webcam);
                panel.setPreferredSize(size);

                textarea = new JTextArea();
                textarea.setEditable(false);
                textarea.setPreferredSize(size);

                add(panel);
                add(textarea);

                pack();
                setVisible(true);

                executor.execute(this);
        }

        @Override
        public void run() {

                do {
                        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());
                        }

                } while (true);
        }

        @Override
        public Thread newThread(Runnable r) {
                Thread t = new Thread(r, "example-runner");
                t.setDaemon(true);
                return t;
        }

        public static void main(String[] args) {
                new Scanner();
        }
}