使用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;
		}
	}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章