熟女人妻水多爽中文字幕,国产精品鲁鲁鲁,隔壁的少妇2做爰韩国电影,亚洲最大中文字幕无码网站

技術頻道

娓娓工業
您現在的位置: 中國傳動網 > 技術頻道 > 技術百科 > 【正運動】VPLC系列機器視覺運動控制一體機快速入門(十一)多輪廓匹配

【正運動】VPLC系列機器視覺運動控制一體機快速入門(十一)多輪廓匹配

時間:2021-07-05 17:46:38來源:深圳市正運動技術有限公司

導語:?在工業生產環節中,同一個檢測工位可能會對不同的物料的多種形狀進行分類拾取操作時,需要識別與定位,此時需要可以同時支持匹配多種模板輪廓的功能,因此,我們正運動視覺指令引入了多輪廓匹配的功能。

運動控制

  形狀匹配是基于邊緣梯度的輪廓相似度搜索匹配功能,經常用于批量生產的具有固定形狀的產品的定位檢測項目,或者輔助其他視覺檢測算法做位置補正功能,但是它只能識別一種形狀的產品。

  在工業生產環節中,同一個檢測工位可能會對不同的物料的多種形狀進行分類拾取操作時,需要識別與定位,此時需要可以同時支持匹配多種模板輪廓的功能,因此,我們正運動視覺指令引入了多輪廓匹配的功能。

  上期課程,我們講述了機器視覺方案中齒輪缺齒檢測的應用例程,本期課程我們將和大家一起分享如何實現多輪廓匹配的功能。

運動控制

  教學視頻

  一檢測原理梯形圖介紹

  多輪廓匹配的檢測算法是在形狀匹配的基礎上增加存儲多種模板輪廓信息的列表,創建模板完成后將對應模板信息添加到模板列表中,并生成模板對應的唯一ID(默認ID從0開始,依次遞增)。在執行多輪廓匹配時,會將當前圖像中的所有目標特征和模板列表進行相似度對比,返回所有滿足匹配條件的結果信息,包括分數、位置X、位置Y、角度、比例、模板ID。

  二軟件實現梯形圖介紹

  (一)軟件實現

  1.打開ZDevelop軟件:新建項目→新建“HMI”文件→新建“main.bas”文件,用于編寫界面響應函數→新建“global_variable.bas”文件用于存放全局變量并開啟HMI自動運行任務→新建“InitLocator.bas”文件用于初始化測量參數→新建“camera.bas”文件用于實現相機采集功能→新建draw.bas文件用于更新繪制圖形刷新界面→文件添加到項目。

運動控制

  2.設計HMI界面。

運動控制

  3.在“global_variable.bas”文件中定義全局變量,定義完成后運行“Hmi.hmi”文件。

  '''''全局變量大部分使用數組結構'''''''注:basic編程中很多函數會以TABLE(系統的數據結構)做為參數''table 說明 table 說明''0~1 獲取到的圖像寬高 15~18 定位器roi圖像坐標數據''0~1 匹配結果矩陣的行列數 25~28 定位器roi控件和圖像數據''53~62 匹配結果 30~31 橡皮擦roi坐標''11~12 鼠標操作時獲取的坐標 40~46 匹配參數

  '***********定義程序任務相關變量**********************

  '主任務狀態'0 - 未初始化'1 - 停止'2 - 運行中'3 - 正在停止GLOBAL DIM main_task_statemain_task_state = 1

  '運行任務開關GLOBAL DIM run_switchrun_switch = 0

  '采集任務開關'0 - 停止采集'1 - 請求采集GLOBAL DIM grab_switchgrab_switch = 0

  '定位檢測主任務id - 10GLOBAL DIM main_task_idmain_task_id = 10

  '相機連續采集線程id - 7GLOBAL DIM grab_task_idgrab_task_id = 7

  '***********結束定義程序任務相關變量******************

  '***********定義相機采集相關變量**********************

  '相機種類,此處使用海康相機-"mvision"GLOBAL DIM CAMERA_TYPE(100)'CAMERA_TYPE = "mindvision;basler;mvision;huaray;zmotion"CAMERA_TYPE = "mvision"

  '相機個數GLOBAL cam_numcam_num = 0

  '相機模式,-1 連續采集,0-軟件觸發采集GLOBAL cam_modecam_mode = 0

  '***********結束定義相機采集相關變量******************

  '定義返回主界面標志,1-已返回,0-未返回GLOBAL DIM d_is_rtn_loc d_is_rtn_loc = 1

  '***********定義模板相關變量*************************'定義鼠標按下標志位,1-已按下,0-未按下GLOBAL DIM is_set_roi_m_downis_set_roi_m_down = 0

  '定義創建模板標志位,1-已創建模板,0-未創建模板GLOBAL DIM d_is_creModeld_is_creModel = 0

  '學習模板參數,starAngle、endAngle、minScale、maxScale、thresh、numlevel、reduce、angleStep、scaleStepGLOBAL DIM d_mod_param(9)

  '***********結束定義模板相關變量**********************

  '***********定義編輯模板相關變量*********************

  '定義編輯模板標志,0-表示不編輯模板,1-表示編輯模板GLOBAL DIM d_edit_md_edit_m = 0

  '定義使用橡皮擦功能標志,0-表示恢復擦除的區域,1-表示擦除區域GLOBAL DIM d_isMask_md_isMask_m = 1

  '定義橡皮擦的roi參數,依次是矩形左上角和右下角圖像坐標x、y、x、yGLOBAL DIM d_locator_roi(4),d_eraser_roi(4)

  '定義正方形橡皮擦尺寸寬度GLOBAL DIM d_eraser_sized_eraser_size = 5

  '定義界面控件上橡皮擦的矩形區域 GLOBAL DIM c_rect(4) '定義鼠標狀態標志,0-表示鼠標處于松開狀態,1-表示鼠標處于按下狀態GLOBAL DIM d_mouse_sd_mouse_s = 0

  '***********結束定義編輯模板相關變量******************

  '***********定義匹配檢測相關變量*********************

  '定義學習模板的roi參數和橡皮擦的roi參數,依次是矩形左上角和右下角圖像坐標x、y、x、yGLOBAL DIM d_locator_roi(4),d_eraser_roi(4)

  '匹配結果,score、x、y、angle、scale, 目前對于多目標匹配也只存第一個目標GLOBAL DIM d_match_rst(5)

  GLOBAL DIM d_match_time '定義匹配定位消耗的時間變量d_match_time = 0

  '***********結束定義匹配檢測相關變量******************

  '定義程序執行過程中緩存中間圖片和結果圖片的變量GLOBAL ZVOBJECT grabImgGLOBAL ZVOBJECT subImg,copy_subImg,colorSubImg, s_mod,modList,mat_paramGLOBAL ZVOBJECT modRe

  GLOBAL DIM C_RED, C_GREEN, C_BLUE, C_YELLOWC_RED = ZV_COLOR(255, 0, 0)C_GREEN = ZV_COLOR( 0,255, 0)C_BLUE = ZV_COLOR( 0, 0,255)C_YELLOW= ZV_COLOR(255,255, 0)

  '顯示打印的字符GLOBAL ShowString(64),ShowString1(64)

  '***********定義讀取本地文件功能相關變量**************''注意,該功能只在使用仿真器時有效'定義是否使用本地圖片標志GLOBAL DIM d_use_imgfile

  '定義本地圖片索引GLOBAL DIM d_index

  '定義讀取圖片的路徑GLOBAL DIM File_Name(100)

  '***********結束定義讀取本地文件功能相關變量**********

  '初始化全局變量完成后開啟HMI文件RUN"Hmi1.hmi",1

  4.在“InitLocator.bas”文件中初始化測量參數。

  end

  GLOBAL SUB init_meas_param() '初始化測量參數

  '初始化定位器roi參數 d_locator_roi(0) = 240 '左上角x d_locator_roi(1) = 180 '左上角y d_locator_roi(2) = 400 '右下角x d_locator_roi(3) = 300 '右下角y '初始化模板參數 d_mod_param(0) = -180 '起始角度 d_mod_param(1) = 180 '終止角度 d_mod_param(2) = 1 '最小縮放 d_mod_param(3) = 1 '最大縮放 d_mod_param(4) = 80 '閾值 d_mod_param(5) = 0 '默認金字塔層數 d_mod_param(6) = 0 '默認約簡特征點 d_mod_param(7) = 0 '默認角度步長 d_mod_param(8) = 0 '默認縮放步長 '初始化匹配測量參數 TABLE(40) = 70 '最小分數 TABLE(41) = 1 '匹配個數 TABLE(42) = 10 '默認最小間距 TABLE(43) = 40 '最小閾值 TABLE(44) = 0 '精度 TABLE(45) = 9 '速度 TABLE(46) = 0 '極性 '初始化匹配定位結果 d_match_rst(0) = 0 '分數 d_match_rst(1) = 0 '位置X d_match_rst(2) = 0 '位置Y d_match_rst(3) = 0 '角度 d_match_rst(4) = 0 '比例 '初始化匹配定位消耗時間 d_match_time = 0 d_use_imgfile = 1 '默認使用本地圖片 d_index = 0

  END SUB

  5.關聯HMI界面控件變量。

運動控制

  6.在“main.bas”文件中添加HMI界面初始化函數并在Hmi系統設置中關聯初始化函數。

  'HMI界面初始化函數,上電執行一次GLOBAL SUB hmi_init()

  ZV_ENVINIT() ZV_SETSYSSTR("DataDir","") '設置默認數據目錄 ZV_SETSYSINT("LineWidth",6) '設置線寬為 10 grab_switch = 0 '初始化采集任務開關,不開啟采集任務 main_task_state = 1 '初始化定位檢測主任務狀態為停止狀態1 ZV_RESETCLIPSIZE(1280, 960) '根據圖像分辨率設置圖像區域的裁剪尺寸,此處圖像分辨率為1280x960 ZV_LATCHSETSIZE(0, HMI_CONTROLSIZEX(10, 2), HMI_CONTROLSIZEY(10, 2)) '設置鎖存的大小 init_meas_param() '初始化測量參數 ZV_IMGGENCONST(subImg,40,30,1,0,0) '初始化模板子圖像 '初始化匹配使用到的中間變量 ZVOBJECT contlist1, tsContlist1, mat_rigid1 ZVOBJECT contlist2, tsContlist2, mat_rigid2 ZV_LATCHCLEAR(0) '清空鎖存通道 ZV_MATGENDATA(mat_param, 1, 7, 40) '將TABLE中1行9列40的數據生成到矩陣mat_param中 END SUB

運動控制

  7.在“camera.bas”文件中添加HMI界面中采集相關按鈕響應的函數并關聯動作函數。(說明:具體實現函數前面兩篇課程內容已經有操作演示,此處不做贅述。)

運動控制

  8.點擊[元件]→[新建窗口],新建學習模板窗口,設計窗口布局,關聯變量。

運動控制

  9.在“draw.bas”文件中添加主界面【學習模板】按鈕響應的函數并關聯動作函數。

  '主界面按下學習模板按鈕時響應的函數GLOBAL SUB btn_sel_loc()

  ZV_LATCHSETSIZE(0, HMI_CONTROLSIZEX(11, 60), HMI_CONTROLSIZEY(11, 60)) '設置創建模板窗口鎖存通道0的鎖存大小 SET_COLOR(RGB(0,255,0)) '指定draw指令使用的顏色 ZV_LATCHCLEAR(0) '將鎖存通道0清空 ZV_LATCH(grabImg, 0) '將采集圖像顯示到鎖存通道0中 ZV_LATCH(colorSubImg, 1) '將模板圖像顯示到鎖存通道1中 is_redraw = 0 '將繪圖標志置0 d_is_rtn_loc = 0 '將返回界面標志置0 '將模板區域的圖像坐標存放到起始地址為25的table數組中 TABLE(25, d_locator_roi(0), d_locator_roi(1),d_locator_roi(2),d_locator_roi(3)) ZV_POSFROMIMG(0, 2, 25, 25) '將圖像坐標轉換到HMI控件坐標 HMI_SHOWWINDOW(11) '彈出窗口號為11的創建模板窗口

  END SUB

運動控制

  10.在“draw.bas”文件中添加模板區域更新繪制函數,并在學習模板界面的自定義控件上關聯刷新函數名和繪圖函數名。

  '根據鼠標操作更新定位器的區域即學習模板的有效區域GLOBAL SUB update_locator()

  if mouse_scan(11) = 1 then '掃描鼠標按下操作 is_set_roi_m_down = 1 '鼠標按下標志置1 sr_mpos_x = table(11) '將當前鼠標按下位置的坐標賦值給變量 sr_mpos_y = table(12) '只有按下時可以改變擊中位置,獲取鼠標點擊位置對應的擊中區域編號 hit_pos = ZV_HMIADJRECT(sr_mpos_x, sr_mpos_y, 25, -1) is_redraw = 1 '繪圖標志置1 endif if mouse_scan(11) = -1 then '掃描鼠標松開操作 is_set_roi_m_down = 0 '鼠標按下標志置0 sr_mpos_x = table(11) '將當前鼠標松開位置的坐標賦值給變量 sr_mpos_y = table(12) '根據區域編號調整定位器區域位置 ZV_HMIADJRECT(sr_mpos_x, sr_mpos_y, 25, hit_pos) is_redraw = 1 '繪圖標志置1 endif '如果鼠標按下時 if (is_set_roi_m_down and MOUSE_state(11)) then sr_mpos_x = table(11) '將當前鼠標按下位置的坐標賦值給變量 sr_mpos_y = table(12) '根據區域編號調整定位器區域位置 ZV_HMIADJRECT(sr_mpos_x, sr_mpos_y, 25, hit_pos) is_redraw = 1 '繪圖標志置1 endif if (1 = is_redraw) then '如果繪制標志=1 is_redraw = 0 '將繪制標志置0 '控件roi坐標轉圖像roi坐標,控件坐標存放在起始地址為25的數組,圖像坐標存放在起始地址為15的數組 ZV_POSTOIMG(0, 2, 25, 15) '將圖像坐標的數據賦值給ROI變量中 d_locator_roi(0) = TABLE(15) d_locator_roi(1) = TABLE(16) d_locator_roi(2) = TABLE(17) d_locator_roi(3) = TABLE(18) SET_REDRAW '重新繪制全部區域 endif END SUB

運動控制

  11.在“main.bas”文件中添加【截取模板】按鈕響應的函數并關聯動作函數。

  '創建模板界面按下截取模板按鈕后響應的函數GLOBAL SUB btn_getSubImg()

  LOCAL mod_w,mod_h '根據ROI數據生成模板子圖像 ZV_IMGGETSUB(grabImg, subImg, d_locator_roi(0), d_locator_roi(1), d_locator_roi(2)-d_locator_roi(0)+1, d_locator_roi(3)-d_locator_roi(1)+1) '獲取圖像信息,存放到起始地址為0的table數組中 ZV_IMGINFO(subImg,0) mod_w = TABLE(0) mod_h = TABLE(1) '根據圖像信息生成模板區域 ZV_REGENRECT(modRe,0,0,mod_w, mod_h) '清空鎖存通道1 ZV_LATCHCLEAR(1) '將模板子圖像顯示到鎖存通道1中 ZV_LATCH(subImg, 1) END SUB

運動控制

  12.點擊[元件]→[新建窗口],新建編輯模板窗口,設計窗口布局,并關聯變量。

運動控制

  13.在“draw.bas”文件中添加創建模板界面【橡皮擦】按鈕響應的函數并關聯動作函數。

  '創建模板界面按下橡皮擦按鈕時響應的函數GLOBAL SUB btn_sel_erase()

  ZV_LATCHSETSIZE(1, HMI_CONTROLSIZEX(12, 1), HMI_CONTROLSIZEY(12, 1)) '設置鎖存通道1的大小 SET_COLOR(RGB(0,255,0)) '設置繪制時畫筆使用的顏色 ZV_LATCHCLEAR(1) '清空鎖存通道1 ZV_IMGCOPY(subImg, copy_subImg) '復制模板子圖像到copy_subImg圖像變量中 ZV_REGION(copy_subImg, modRe, 1, 0) '在模板圖像上繪制modRe圖像的非有效區域,繪制顏色為黑色,用于掩模 ZV_LATCH(copy_subImg, 1) '顯示復制的模板圖 HMI_SHOWWINDOW(12) '打開編輯模板窗口 END SUB

運動控制

  14.在“draw.bas”文件中添加橡皮擦更新繪制函數,并在編輯模板界面的自定義控件上關聯刷新函數名和繪圖函數名。

  '根據鼠標操作更新橡皮擦擦除/恢復區域的位置GLOBAL SUB update_eraser() DIM c_size_eraser '橡皮擦在控件上對應的尺寸 DIM eraser_pos_x,eraser_pos_y d_mouse_s = MOUSE_STATE(11) '鼠標處于按下狀態時 eraser_pos_x = TABLE(11) '將當前鼠標按下位置的坐標賦值給橡皮擦控件坐標變量 eraser_pos_y = TABLE(12) c_size_eraser = ZV_LENFROMIMG(0, d_eraser_size) '將橡皮擦的圖像尺寸轉換成控件尺寸 '生成以(eraser_pos_x,eraser_pos_y)為中心,2*c_size_eraser為邊長的正方形橡皮擦區域 c_rect(0, eraser_pos_x - c_size_eraser, eraser_pos_y - c_size_eraser, eraser_pos_x + c_size_eraser, eraser_pos_y + c_size_eraser) DIM hmi_w,hmi_h '限制橡皮擦坐標在圖片元件區域內 if (eraser_pos_x >= c_size_eraser) and (eraser_pos_y >= c_size_eraser) and (eraser_pos_x <= HMI_CONTROLSIZEX(12, 1) - c_size_eraser)and (eraser_pos_y <= HMI_CONTROLSIZEy(12, 1) - c_size_eraser) THEN '重新繪制編輯模板窗口上的鎖存通道0區域 SET_REDRAW(0,0, HMI_CONTROLSIZEX(12, 1), HMI_CONTROLSIZEY(12, 1)) endif if d_mouse_s = 1 and d_edit_m = 1 then '如果鼠標處于按下狀態且編輯模板標志=1時 btn_pro_eraser() '執行處理橡皮擦函數 endif END SUB

  '處理橡皮擦函數GLOBAL SUB btn_pro_eraser() ZVOBJECT tmp_re '將橡皮擦區域的左上角坐標x,y存放到起始地址為30的數組中 TABLE(30, c_rect(0), c_rect(1)) '將控件坐標轉換到圖像坐標中 ZV_POSTOIMG(1, 1, 30, 30) '根據圖像坐標系下的數據生成正方形橡皮擦區域,并存放到tmp_re變量中 ZV_REGENRECT(tmp_re, TABLE(30), TABLE(31), 2 * d_eraser_size + 1, 2 * d_eraser_size + 1) if (d_isMask_m = 1) then '如果選擇屏蔽功能 ZV_REDIFF(modRe, tmp_re, modRe) '計算modRe和tmp_re的差集并存放到modRe中,即取橡皮擦區域以外的模板子圖像區域 else '如果選擇恢復功能 ZV_REUNION(modRe, tmp_re, modRe) '計算modRe和tmp_re的并集并存放到modRe中,即取當前模板子圖像區域 endif ZV_IMGCOPY(subImg, copy_subImg) '復制模板子圖像到copy_subImg圖像變量中 ZV_REGION(copy_subImg, modRe, 1, 0) '在模板圖像上繪制modRe圖像的非有效區域,繪制顏色為黑色,用于掩模 ZV_LATCH(copy_subImg, 1) '顯示復制的模板圖 END SUB

  '更新繪制橡皮擦區域GLOBAL SUB draw_eraser() if d_edit_m = 0 then '如果編輯模板標志為0 return '返回子函數,不繼續往下執行 endif '繪制正方形橡皮擦區域 DRAWRECT(c_rect(0), c_rect(1), c_rect(2), c_rect(3)) END SUB

運動控制

  15.在“main.bas”文件中添加編輯模板界面【創建模板】按鈕響應的函數并關聯動作函數。

  '編輯模板界面按下創建模板按鈕時響應的函數GLOBAL SUB btn_loc_creModel()

  d_is_creModel = 1 '創建模板標志置1 '根據模板參數和模板子圖像創建模板,并將模板結果存放到s_mod變量中 ZV_SHAPECREATERE(subImg, modRe,s_mod, d_mod_param(0), d_mod_param(1), d_mod_param(2), d_mod_param(3), d_mod_param(4), d_mod_param(5), d_mod_param(6), d_mod_param(7), d_mod_param(8)) ZV_SHAPECONTOURS(s_mod, contlist1, 0) '獲取第0層金字塔上的模板輪廓 ZV_GRAYTORGB(subImg, colorSubImg) '灰度圖轉換成RGB圖 ZV_IMGINFO(colorSubImg, 0) '獲取colorSubImg圖像信息,并存放到table0中 ZV_GETRIGIDVECTOR(mat_rigid1, 0, 0, 0, TABLE(0)/2, TABLE(1)/2, 0)'計算剛性變換矩陣 ZV_CONTAFFINE(contlist1, mat_rigid1, tsContlist1)'對輪廓或輪廓序列進行仿射變換 ZV_CONTLIST(colorSubImg, tsContlist1, ZV_COLOR(0, 255, 0), 0)'在colorSubImg圖像上繪制綠色的輪廓序列 ZV_LATCHCLEAR(2) '清空鎖存通道2 ZV_LATCH(colorSubImg, 2) '顯示圖像結果到鎖存通道2中 END SUB

運動控制

  16.在“main.bas”文件中添加編輯模板界面【添加模板】按鈕響應的函數并關聯動作函數。

  '編輯模板界面按下添加模板按鈕時響應的函數GLOBAL SUB btn_loc_addModel()

  DIM count if d_is_creModel = 1 then zv_listinsert(s_mod, modList) count = ZV_LISTCOUNT(modList) '獲取列表中的數量 ShowString="已添加模板"+TOSTR(count) ?ShowString endif END SUB

運動控制

  17.在“main.bas”文件中添加編輯模板界面【清空模板】按鈕響應的函數并關聯動作函數。

  '編輯模板界面按下清空模板列表按鈕時響應的函數GLOBAL SUB btn_loc_clrMods() ZV_CLEAR(modList) ?"已清空模板列表!"END SUB

運動控制

  18.在“draw.bas”文件中添加編輯模板界面【確定】按鈕響應的函數并關聯動作函數。

  '編輯模板界面按下確定按鈕時執行的函數GLOBAL SUB btn_erase_cfm()

  ZV_LATCHCLEAR(0) '清空鎖存通道0 ZV_LATCH(grabImg, 0) '顯示圖像在鎖存通道0上 HMI_CLOSEWINDOW(12) '關閉編輯模板窗口 END SUB

運動控制

  19.在“main.bas”文件中添加創建模板界面【測試】按鈕響應的函數并關聯動作函數。

  '創建模板界面按下測試按鈕時響應的函數GLOBAL SUB btn_loc_test() if (d_is_creModel = 0 OR ZV_LISTCOUNT(modList)=0 ) then ?"未創建模板!" '提示未創建模板毛病返回子函數不往下執行 return endif '開始匹配 TICKS = 0 '開始計時 ZVOBJECT match_rst, sImg, colorImg,contours ZV_CLEAR(match_rst) ZV_MATINFO(match_rst, 0) '獲取矩陣結果信息。并存放到起始地址為0的table數組中 '對圖像進行3*3高斯平滑處理,處理后的圖像輸出到sImg變量中 ZV_GAUSSBLUR(grabImg, sImg, 3) ZV_SHAPEFINDS(modlist,mat_param,sImg,match_rst,3,0)'多目標匹配 ZV_MATINFO(match_rst, 0) '獲取矩陣結果信息。并存放到起始地址為0的table數組中 ZV_GRAYTORGB(sImg, colorImg) '灰度圖轉換到RGB圖,作為匹配結果圖像 if TABLE(0) > 0 then '如果匹配到目標 local rowr for rowr = 0 to TABLE(0)-1 '獲取match_rst矩陣中第rowr行的數據存放到起始地址為53的table數組中,table最大長度6 ZV_MATGETROW(match_rst, rowr, 6, 53) zv_listget(modList, s_mod, table(58)) ZV_SHAPECONTOURS(s_mod, contours, 0)'獲取模板輪廓 ZV_GETRIGIDVECTOR(mat_rigid1, 0, 0, 0, TABLE(54), TABLE(55), TABLE(56)) ZV_CONTAFFINE(contours, mat_rigid1, contours) ZV_CONTLIST(colorImg, contours, C_GREEN, 0) if TABLE(58)=0 then ShowString="target1:" elseif TABLE(58)=1 then ShowString="target2:" else ShowString="target3:" endif ShowString1=TOSTR(TABLE(54),1,2)+","+TOSTR(TABLE(55),1,2)+","+TOSTR(TABLE(56),1,2) TABLE(54)=TABLE(54)-40 ZV_TEXT(colorImg,ShowString,TABLE(54), TABLE(55),50,ZV_COLOR(255,0,255) ) TABLE(55)=TABLE(55)+50 ZV_TEXT(colorImg,ShowString1,TABLE(54), TABLE(55),50,ZV_COLOR(255,0,255) ) next else '未匹配到目標時,將結果賦值為-1 d_match_rst(0) = -1 d_match_rst(1) = -1 d_match_rst(2) = -1 d_match_rst(3) = -1 d_match_rst(4) = -1 endif d_match_time = abs(TICKS) '計算匹配消耗時間 ZV_LATCH(colorImg, 0) '顯示匹配結果圖像 END SUB

運動控制

  20.在“draw.bas”文件中添加創建模板界面【確定】按鈕響應的函數并關聯動作函數。

  '創建模板界面按下確定按鈕時響應的函數GLOBAL SUB btn_loc_cfm()

  grab_switch = 0 '關閉補正源的連續采集 d_is_rtn_loc = 1 '返回主界面標志置為1 '設置鎖存通道0的大小 ZV_LATCHSETSIZE(0, HMI_CONTROLSIZEX(10, 2), HMI_CONTROLSIZEY(10, 2)) ZV_LATCHCLEAR(0) '清空鎖存通道0 ZV_LATCH(grabImg, 0) '顯示圖像在鎖存通道0上 HMI_CLOSEWINDOW(11) '關閉創建模板窗口 END SUB

運動控制

  21.在“main.bas”文件中添加主界面【單次執行】按鈕響應的函數并關聯動作函數。

  '主界面按下單次執行按鈕時響應的函數GLOBAL SUB btn_test()

  '執行單次采集響應函數獲取一幀圖像 btn_grab() '執行測試按鈕響應函數進行匹配定位檢測 btn_loc_test() END SUB

運動控制

  22.在“main.bas”文件中添加主界面【連續運行】按鈕響應的函數并關聯動作函數。

  '主界面點擊連續運行按鈕時響應的函數GLOBAL SUB btn_run() if(run_switch = 1) then '如果已經開啟連續運行 ?"已開啟連續運行,請勿重復操作!" '提示信息并退出子函數,不往下執行 return endif run_switch = 1 '主任務開關置1 if (1 = run_switch) then '如果主任務開關=1 if (0 = PROC_STATUS(main_task_id)) then '如果main_task_id任務未開啟 RUNTASK main_task_id, main_task '開啟main_task任務 endif endifEND SUB

  '主任務執行的內容main_task: while(1) if (0 = run_switch) then '如果主任務開關=0即停止運行按鈕按下時 exit while '退出循環 endif '否則重復執行以下操作 if (d_use_imgfile=1) then '如果d_use_imgfile=1時使用讀取本地圖片功能 if(d_index=3) then d_index=0 endif File_Name="多輪廓/"+TOSTR(d_index,1,0)+".bmp" '讀取本地圖片時圖片所在的路徑名稱 ZV_IMGREAD(grabImg,File_Name,0) d_index=d_index+1 else '如果相機數量為0,提示先掃描相機,并退出子函數不往下執行 if cam_num = 0 then ?"請先掃描相機!" return endif CAM_SETPARAM("TriggerSoftware", 0) '發送觸發指令 CAM_GET(grabImg, 0) endif '執行測試按鈕響應函數進行匹配定位檢測 btn_loc_test() wend END

運動控制

  23.在“main.bas”文件中添加主界面【停止運行】按鈕響應的函數并關聯動作函數。

  '主界面點擊停止執行按鈕時響應的函數GLOBAL SUB btn_stop()

  if(run_switch = 0) then '如果主任務開關=0 ?"未開啟連續運行!" '提示未開啟循環任務,并退出子函數不往下執行 return endif run_switch = 0 '主任務開關置0,退出循環 END SUB

運動控制

  三、操作演示梯形圖介紹

  (一)操作步驟

  查看運行效果:將項目下載到仿真器中→使用本地圖片→單次采集→學習模板→截取模板→橡皮檫依次創建所需的幾個模板→依次添加幾個模板→點擊測試查看效果圖,再點擊確定返回主界面。→點擊連續運行,查看運行效果→結束。

  (二)效果演示

運動控制

  本次,正運動技術VPLC系列機器視覺運動控制一體機快速入門(十一)多輪廓匹配,就分享到這里。

  本文由正運動技術原創,歡迎大家轉載,共同學習,一起提高中國智能制造水平。文章版權歸正運動技術所有,如有轉載請注明文章來源。


標簽: 運動控制運動控制

點贊

分享到:

上一篇:什么是伺服電機?與步進電機相...

下一篇:【正運動】EtherCAT運動控制...

中國傳動網版權與免責聲明:凡本網注明[來源:中國傳動網]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(www.hysjfh.com)獨家所有。如需轉載請與0755-82949061聯系。任何媒體、網站或個人轉載使用時須注明來源“中國傳動網”,違反者本網將追究其法律責任。

本網轉載并注明其他來源的稿件,均來自互聯網或業內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。

網站簡介|會員服務|聯系方式|幫助信息|版權信息|網站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動網-工業自動化與智能制造的全媒體“互聯網+”創新服務平臺

網站客服服務咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權所有
粵ICP備 14004826號 | 營業執照證書 | 不良信息舉報中心 | 粵公網安備 44030402000946號

主站蜘蛛池模板: 聂拉木县| 通许县| 柳江县| 蓬安县| 灵山县| 慈溪市| 保德县| 达孜县| 宣恩县| 从化市| 宁强县| 镇安县| 龙川县| 巴楚县| 大丰市| 宁夏| 泊头市| 裕民县| 靖西县| 宁陵县| 明星| 南川市| 依安县| 阳江市| 阜城县| 澄城县| 和田县| 彭泽县| 介休市| 佛学| 苍山县| 安陆市| 甘德县| 玉门市| 海林市| 高要市| 周宁县| 毕节市| 甘孜| 成武县| 深州市|