当前位置: 首页 > wzjs >正文

西安网站建设网站建设南宁seo内部优化

西安网站建设网站建设,南宁seo内部优化,网站建设运营合同,wordpress 标签云插件下载在Halcon中,二维码识别是一个常见的机器视觉任务,通常用于产品类型检测或MES系统对接。 Halcon提供冷一系列算子(operators)来简化二维码识别的过程。 操作步骤 读取二维码图像 read_image对图像进行想要预处理 【灰度化 二值化…

在Halcon中,二维码识别是一个常见的机器视觉任务,通常用于产品类型检测或MES系统对接。

Halcon提供冷一系列算子(operators)来简化二维码识别的过程。

操作步骤

  1. 读取二维码图像  read_image
  2. 对图像进行想要预处理 【灰度化 二值化 区域特殊筛选 形态学 几何变换 区域锁定】
  3. 创建二维码解析对象 create_data_code_2d_model
  4. 设置解析对象相关的参数 set_data_code_2d_param
  5. 搜索目标区域的二维码并解析获取解析结果 find_data_code_2d
  6. 释放二维码解析对象 clear_data_code_2d_model

创建 create
设置 set
获取 get/query
搜索 find
生成 gen
绘制 draw
显示 dev_disp

预处理

  • 图像预处理:对比度低或模糊,可以用  scale_image 和 emphasis
  • 二维码区域提取: 当图像信息过多,可以使用 reduce_domain 和 crop_domain算子,有助于降低解码难度并减少解码时间
  • 二维码放大:对于较小的二维码,可以用 zoom_image_factor 放大图像

案例

1.D码

*窗体清空,数据清空
dev_close_window ()
dev_update_off ()
*获取窗口句柄
dev_get_window (WindowHandle)
*设置字体
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
*ROI样式设置
dev_set_draw ('margin')
dev_set_color ('green')
dev_set_line_width (3)
*创建二维码格式
create_data_code_2d_model ('Data Matrix ECC 200', [], [], DataCodeHandle)
*设置二维码参数
set_data_code_2d_param (DataCodeHandle, 'default_parameters', 'maximum_recognition')
*读取文件夹
list_files ('D:/Halcon/‫Image/3二维D码', 'files', Files)
*正则表达式筛选
tuple_regexp_select (Files, '.(bmp|jpg)', Selection)
num:=|Selection|-1
for Index:=0 to num by 1read_image (Image,Selection[Index])*找到二维码find_data_code_2d (Image, SymbolXLDs, DataCodeHandle, [], [], ResultHandles, DecodedDataStrings)*获取结果get_data_code_2d_results (DataCodeHandle, 'all_candidates', 'status', ResultValues)*获取找到的数量count_obj (SymbolXLDs, Number)*显示dev_display (Image)dev_display (SymbolXLDs)*显示解码结果disp_message (WindowHandle, DecodedDataStrings, 'image', 12, 12, 'black', 'true')if(Index==num)disp_continue_message (WindowHandle, 'black', 'false')elsedisp_continue_message (WindowHandle, 'black', 'true')stop ()endif
endfor
disp_message (WindowHandle, '结束了', 'image', 200, 300, 'red', 'white')

 2.QR码

 

*dev_update_off ()
*dev_close_window ()
dev_get_window (WindowHandle)
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
dev_set_draw ('margin')
dev_set_color ('green')
dev_set_line_width (3)
create_data_code_2d_model ('QR Code', 'default_parameters', 'maximum_recognition', DataCodeHandle)
list_files ('D:/Halcon/‫Image/4二维QR码', 'files', Files)
tuple_regexp_select (Files, '.(bmp|pg)', Selection)
for Index:=0 to |Selection|-1 by 1read_image (Image, Selection[Index])find_data_code_2d (Image, SymbolXLDs, DataCodeHandle, [], [], ResultHandles, DecodedDataStrings)count_obj (SymbolXLDs, Number)if(Number<1)disp_message (WindowHandle, 'NG', 'window', 12, 12, 'red', 'true')elsedisp_message (WindowHandle, 'OK\r\n'+DecodedDataStrings, 'image', 12, 12, 'green', 'true')endifstop ()
endfor
disp_message (WindowHandle, '结束了', 'window', 200, 300, 'red', 'true')

3.中文QR解码 

 

*将输入的参数从当前操作系统语言环境编码转换成UFT-8编码
set_system ('filename_encoding', 'utf8')
dev_update_off ()
dev_close_window ()
read_image (Image, 'D:/Halcon/‫Image/N维码/实现中文QR二维码的读取/1.png')
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
dev_set_line_width (3)
dev_set_color ('green')
dev_display (Image)
create_data_code_2d_model ('QR Code', [], [], DataCodeHandle)
set_data_code_2d_param (DataCodeHandle, 'string_encoding', 'utf8')
find_data_code_2d (Image, SymbolXLDs, DataCodeHandle, [], [], ResultHandles, DecodedDataStrings)
dev_display (Image)
dev_display (SymbolXLDs)
disp_message (WindowHandle, '读出的二维码是'+DecodedDataStrings, 'window', 12, 12, 'black', 'true')
clear_data_code_2d_model (DataCodeHandle)

4.查找多维玛

 


dev_get_window (WindowHandle)
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
dev_set_color ('green')
dev_set_draw ('margin')
dev_set_line_width (3)
*创建 Data Matrix ECC 200二维码模板
create_data_code_2d_model ('Data Matrix ECC 200', 'default_parameters', 'maximum_recognition', DataCodeHandleECC200)
*创建PDF417二维码模板
create_data_code_2d_model ('PDF417', 'default_parameters', 'maximum_recognition', DataCodeHandlePDF417)
*创建QR Code二维码模板
create_data_code_2d_model ('QR Code', 'default_parameters', 'maximum_recognition', DataCodeHandleQR)
list_files ('D:/Halcon/‫Image/N维码/兼容多种二维码读取案例', 'files', Files)
tuple_regexp_select (Files, '.(jpg|bmp|png)', Selection)
for Index:=0 to |Selection|-1 by 1read_image (Image, Selection[Index])find_data_code_2d (Image, SymbolXLDs, DataCodeHandleECC200, [], [], ResultHandles, DecodedDataStrings)count_obj (SymbolXLDs, Number)if(Number>0)disp_message (WindowHandle, '发现ECC200码:\n\r'+DecodedDataStrings, 'window', 12, 12, 'black', 'true')disp_continue_message (WindowHandle, 'black', 'true')stop ()elsefind_data_code_2d (Image, SymbolXLDs, DataCodeHandlePDF417, [], [], ResultHandles1, DecodedDataStrings)count_obj (SymbolXLDs, Number)if(Number>0)disp_message (WindowHandle, '发现PDF417码:\n\r'+DecodedDataStrings, 'window', 12, 12, 'black', 'true')disp_continue_message (WindowHandle, 'black', 'true')stop ()elsefind_data_code_2d (Image, SymbolXLDs, DataCodeHandleQR, [], [], ResultHandles1, DecodedDataStrings)count_obj (SymbolXLDs, Number)if(Number>0)disp_message (WindowHandle, '发现QR码:\n\r'+DecodedDataStrings, 'window', 12, 12, 'black', 'true')disp_continue_message (WindowHandle, 'black', 'true')stop ()elsedisp_message (WindowHandle, '未发现二维码', 'window', 12, 12, 'black', 'true')disp_continue_message (WindowHandle, 'black', 'true')stop ()endifendifendif
endfor
disp_message (WindowHandle, '结束了', 'window', 200, 300, 'black', 'true')
clear_data_code_2d_model (DataCodeHandleQR)
clear_data_code_2d_model (DataCodeHandlePDF417)
clear_data_code_2d_model (DataCodeHandleECC200)

 5.ECC 200 实例

create_data_code_2d_model ('Data Matrix ECC 200', 'default_parameters', 'maximum_recognition', DataCodeHandle)
dev_get_window (WindowHandle)
dev_set_color ('green')
dev_set_draw ('margin')
dev_set_line_width (3)
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
list_files ('D:/Halcon/‫Image/二维码教程/ecc 200检测实例', 'files', Files)
tuple_regexp_select (Files, '.(jpg|png|bmp|tif)', Selection)
for Index:=0 to |Selection|-1 by 1read_image (Image, Selection[Index])get_image_size (Image, Width, Height)zoom_image_factor (Image, Image, 0.15, 0.15, 'constant')find_data_code_2d (Image, SymbolXLDs, DataCodeHandle, [], [], ResultHandles, DecodedDataStrings)count_obj (SymbolXLDs, Number)if(Number<1)stop()find_data_code_2d (Image, SymbolXLDs, DataCodeHandle, 'train', 'all', ResultHandles, DecodedDataStrings)count_obj (SymbolXLDs, Number)endifcount_obj (SymbolXLDs, Number)if(Number>0)disp_message (WindowHandle, 'OK\r\n'+DecodedDataStrings, 'window', 12, 12, 'black', 'true')elsedisp_message (WindowHandle, 'NG', 'window', 12, 12, 'black', 'true')endifstop ()
endfor
disp_message (WindowHandle, '结束了', 'window', 200, 300, 'black', 'true')
clear_data_code_2d_model (DataCodeHandle)

6.PDF417 码

dev_close_window ()
dev_set_draw ('margin')
dev_set_color ('green')
dev_set_line_width (3)
dev_get_window (WindowHandle1)
set_display_font (WindowHandle1, 16, 'mono', 'true', 'false')
dev_get_window (WindowHandle)
create_data_code_2d_model ('PDF417', 'default_parameters', 'maximum_recognition', DataCodeHandle)
list_files ('D:/Halcon/‫Image/二维码教程/pdf417', 'files', Files)
tuple_regexp_select (Files, '.(png|jpg|bmp)', Selection)
for i:=0 to |Selection|-1 by 1read_image (Image, Selection[i])find_data_code_2d (Image, SymbolXLDs, DataCodeHandle, [], [], ResultHandles, DecodedDataStrings)count_obj (SymbolXLDs, Number)if(Number<1)*训练模板。训练模板的时间比较长,比正常识别长很多,而且当训练模板没有找到二维码的时候,时间会更长find_data_code_2d (Image, SymbolXLDs1, DataCodeHandle, 'train', 'all', ResultHandles1, DecodedDataStrings1)*为了防止程序崩溃,导致保存添加了新信息的模板丢失,及时保存新模板write_data_code_2d_model (DataCodeHandle, 'C:/Users/86195/Desktop/二维码集合/data_code_model.dcm')stop ()endifcount_obj (SymbolXLDs, Number)if(Number<1)disp_message (WindowHandle, 'NG', 'window', 12, 12, 'black', 'true')elsedisp_message (WindowHandle, 'OK\r\n'+DecodedDataStrings, 'window', 12, 12, 'black', 'true')endifstop ()
endfor
disp_message (WindowHandle, '结束了', 'window', 200, 300, 'black', 'true')
clear_data_code_2d_model (DataCodeHandle)

  7.QR Code 码

dev_close_window ()
dev_get_window (WindowHandle)
dev_set_draw ('margin')
dev_set_color ('green')
dev_set_line_width (3)
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
create_data_code_2d_model ('QR Code', 'default_parameters', 'maximum_recognition', DataCodeHandle)
list_files ('D:/Halcon/‫Image/二维码教程/qrcode', 'files', Files)
tuple_regexp_select (Files, '.(jpg|bmp|png)', Selection)
for i:=0 to |Selection|-1 by 1read_image (Image, Selection[i])find_data_code_2d (Image, SymbolXLDs, DataCodeHandle, [], [], ResultHandles, DecodedDataStrings)count_obj (SymbolXLDs, Number)if(Number<1)find_data_code_2d (Image, SymbolXLDs1, DataCodeHandle, 'train', 'all', ResultHandles1, DecodedDataStrings1)write_data_code_2d_model (DataCodeHandle, 'C:/Users/86195/Desktop/二维码集合/data_code_model.dcm')stop ()endifcount_obj (SymbolXLDs, Number)if(Number<1)disp_message (WindowHandle, DecodedDataStrings, 'window', 12, 12, 'black', 'true')elsedisp_message (WindowHandle, 'OK\r\n'+DecodedDataStrings, 'window', 12, 12, 'black', 'true')endifstop ()
endfor
disp_message (WindowHandle, '结束了', 'window', 200, 300, 'black', 'true')
clear_data_code_2d_model (DataCodeHandle)

8.多线程并行读取QR码

**************************************************************************1.初始化**************************************************** 
*测量次数
Loops := 3*关闭程序计数器,图形窗口更新,图像变量更新
dev_update_off ()*关闭已经打开的窗口
dev_close_window ()*读取一张图像
read_image (Image, 'barcode/mixed/barcodes_datacodes_mixed_01')*创建一个窗口,图像可以自适应该窗口
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)*设置字体显示信息:字体大小:16;字体类型:mono;粗体,斜体;
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')*显示图像
dev_display (Image)**************************************************************************1.多线程来对多个二维码进行解码**************************************************** *创建一个QR Code类型的二维码模版
create_data_code_2d_model ('QR Code', [], [], QrCodeModel)*创建一个Data Matrix ECC 200类型的二维码模版
create_data_code_2d_model ('Data Matrix ECC 200', 'default_parameters', 'maximum_recognition', Ecc200Model)*创建一个一维码模版
create_bar_code_model ([], [], BarCodeModel)* 训练Qr二维码模版
find_data_code_2d (Image, QrCodeXldsSeq, QrCodeModel, ['stop_after_result_num','train'], [2,'all'], QrCodeHandlesSeq, QrCodeStringsSeq)
* 训练Ecc200二维码模版
find_data_code_2d (Image, Ecc200XldsSeq, Ecc200Model, ['stop_after_result_num','train'], [2,'all'], Ecc200HandlesSeq, Ecc200StringsSeq)
* 训练EAN-13一维码模版
find_bar_code (Image, BarCodeRegionsSeq, BarCodeModel, ['EAN-13','Code 128'], BarCodeStringsSeq)* 串行识别二维码信息,循环识别3次
count_seconds (T1)
for L := 1 to Loops by 1find_qr_codes (Image, QrCodeXldsSeq, QrCodeModel, QrCodeHandlesSeq, QrCodeStringsSeq)find_ecc200_codes (Image, Ecc200Xlds, Ecc200Model, Ecc200Handles, Ecc200Strings)find_bar_codes (Image, BarCodeRegions, BarCodeModel, BarCodeStrings)
endfor
count_seconds (T2)
*串行操作花费的时间
TimeSeq := 1000.0 * (T2 - T1) / Loops* 并行识别二维码信息,循环识别3次
count_seconds (T1)
for L := 1 to Loops by 1*** 开启多线程  par_start<线程名称>par_start<ThreadQRCode> : find_qr_codes (Image, QrCodeXlds, QrCodeModel, QrCodeHandlesSeq, QrCodeStringsSeq)par_start<ThreadECC200> : find_ecc200_codes (Image, Ecc200Xlds, Ecc200Model, Ecc200Handles, Ecc200Strings)par_start<ThreadBarcode> : find_bar_codes (Image, BarCodeRegions, BarCodeModel, BarCodeStrings)* 等待3个线程执行完成par_join ([ThreadQRCode,ThreadECC200,ThreadBarcode])
endfor
count_seconds (T2)
*并行操作花费的时间
TimePar := 1000.0 * (T2 - T1) / Loops* 计算并行相对串行速度提升了多少
Speedup := 100 * ((TimeSeq / TimePar) - 1)* 显示识别到的二维码区域
dev_set_draw ('margin')
dev_set_line_width (4)
dev_set_color ('yellow')
dev_display (QrCodeXlds)
dev_set_color ('green')
dev_display (Ecc200Xlds)
dev_set_color ('cyan')
dev_display (BarCodeRegions)
Color := ['forest green','red']
disp_message (WindowHandle, 'Multithreading speedup: ' + Speedup$'.2f' + '%', 'window', 42, 12, Color[Speedup < 1], 'true')*删除各自条码模版并释放分配内存
clear_bar_code_model (BarCodeModel)
clear_data_code_2d_model (Ecc200Model)
clear_data_code_2d_model (QrCodeModel)

http://www.dtcms.com/wzjs/19565.html

相关文章:

  • 南昌网站建设方案报价网站推广策略有哪些
  • 站群是什么意思培训学校机构有哪些
  • 做的比较好看的国内网站品牌线上推广方案
  • 做的好的h游戏下载网站有哪些百度广告位
  • win7系统做asp网站我要学电脑哪里有短期培训班
  • 网站地图提交给百度微信引流推广怎么找平台
  • 做网站连带责任怎么在百度制作自己的网站
  • Apple 手机网站制作情感链接
  • 天津培训网站建设seo免费软件
  • 上饶网站建设windows优化大师有用吗
  • 深圳网站建设深圳网百度官方营销推广平台加载中
  • 网站搭建的策略与方法电商线上推广
  • 政府网站建设地方标准外贸营销型网站建设公司
  • asp如何做网站北京seo服务商
  • 平面图设计软件有哪些seo托管公司
  • nas 可以做网站吗潍坊seo网络推广
  • 建设网站纳什么税微信搜一搜怎么做推广
  • vr全景网站开发制作沧州网站优化
  • 网站开发长沙黄冈便宜的网站推广怎么做
  • 企业网站怎样做seo外包杭州
  • 做网站能改吗怎样在百度上注册自己的店铺
  • 做织梦网站的心得体会阿里云域名注册入口官网
  • 网站备案 通知青岛官网seo方法
  • 淮南网站优化seo点击软件哪个好用
  • 重庆交通大学官网网站营销推广公司
  • 新网站应该怎么做可以排名靠前百度指数官网查询入口
  • 自己做手机网站广州现在有什么病毒感染
  • 网站五合一建设广告推广平台赚取佣金
  • 专门教人做点心的网站小说搜索风云榜排名
  • 天津做网站找哪家公司好seo是怎么优化推广的