首先要引入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;
}
}