使用javaCV实现摄像头调用,并且完成二维码扫描

首先要引入maven javaCV环境

<!-- javaCV -->
<dependency>
    <groupId>org.bytedeco</groupId>
    <artifactId>javacv-platform</artifactId>
    <version>1.4.3</version>
</dependency>
<!-- end javaCV -->

其次是二维码解析包依赖

 <!-- 二维码 -->
<dependency>
    <groupId>com.google.zxing</groupId>
    <artifactId>core</artifactId>
    <version>3.3.3</version>
</dependency>
<dependency>
    <groupId>com.google.zxing</groupId>
    <artifactId>javase</artifactId>
    <version>3.3.3</version>
</dependency>
<!-- end 二维码 -->
@Autowired
QrcodeServiceImp qrcodeService;

public static Java2DFrameConverter java2dConverter = new Java2DFrameConverter();  //用以完成Frame到BufferedImage的格式转换

/**
 * 摄像头资源
 */
public static OpenCVFrameGrabber grabber;
grabber.start();

Frame frame = grabber.grabFrame();
BufferedImage bImage =java2dConverter.getBufferedImage(frame);
String url = qrcodeService.QrParse(bImage);

二维码解析程序如下:

	public String QrParse(BufferedImage bImage) {
		// TODO Auto-generated method stub
		MultiFormatReader reader = new MultiFormatReader();
		BinaryBitmap binaryBitmap=new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(bImage)));
        Hashtable<DecodeHintType, Object> hints = new Hashtable<>();
//设置编码格式
        hints.put(DecodeHintType.CHARACTER_SET, "UTF-8");
		try {
		Result result = reader.decode(binaryBitmap,hints);
		
		//System.out.println("二维码文本内容:"+result.getText());
		return result.getText();
		} catch (NotFoundException e) {
			// TODO Auto-generated catch block
			//图片中不包含二维码 do not
			//e.printStackTrace();
			return null;
		}
	}

 


版权声明:本文为qq_24172609原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。