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

 

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