对于二维码识别并没有过多的解释,halcon封装了这类的算子,拿来即用。
halcon代码:
read_image (Image, '二维码图片路径。。。')
rgb1_to_gray (Image, GrayImage)
*创建一个二维码数据class模型
create_data_code_2d_model ('QR Code','default_parameters', 'maximum_recognition',DataCodeHandle)
*-检测和读取图像中的二维数据代码符号或训练二维数据代码模型。
find_data_code_2d (GrayImage,SymbolXLDs,DataCodeHandle, 'train', 'all',ResultHandles, DecodedDataStrings)
*删除2D数据代码模型并释放分配的内存。
clear_data_code_2d_model(DataCodeHandle)
如果想使用摄像头来扫描二维码,这里以笔记本摄像头为例:
*打开并配置图像采集设备,这条代码可由halcon自动检测生成
open_framegrabber ('DirectShow', 1, 1, 0, 0, 0, 0, 'default', 8, 'rgb', -1, 'false', 'default', '[0] BisonCam, NB Pro', 0, -1, AcqHandle)
*从采集的图像设备中开启异步捕获
grab_image_start (AcqHandle, -1)
*设置系统参数,filename_encoding,字符编码设置为utf8
set_system ('filename_encoding', 'utf8')
while (true)
*从采集图像的设备中异步抓取图像
grab_image_async (Image, AcqHandle, -1)
rgb1_to_gray (Image, GrayImage)
create_data_code_2d_model ('QR Code','default_parameters', 'maximum_recognition',DataCodeHandle)
find_data_code_2d (GrayImage,SymbolXLDs,DataCodeHandle, 'train', 'all',ResultHandles, DecodedDataStrings)
clear_data_code_2d_model(DataCodeHandle)
endwhile
*关闭指定的图像采集设备。
close_framegrabber (AcqHandle)
效果图:
其中DecodedDataStrings变量里面的网址可以通过浏览器访问
如果说打开你的笔记本摄像头出现异常请参照如何通过halcon自动检索摄像头设备并生成代码:
https://jingyan.baidu.com/article/4f34706e2a4449e386b56d76.html