<style id="7i3y3"></style>

      <sub id="7i3y3"><i id="7i3y3"></i></sub>

        午夜精品一区二区三区成人,中文字幕av一区二区,亚洲AVAV天堂AV在线网阿V,肥臀浪妇太爽了快点再快点,国产网友愉拍精品视频手机,国产精品无码a∨麻豆,久久中文字幕一区二区,a级国产乱理伦片在线观看al
        首頁 新聞 工控搜 論壇 廠商論壇 產品 方案 廠商 人才 文摘 下載 展覽
        中華工控網首頁
          P L C | 變頻器與傳動 | 傳感器 | 現場檢測儀表 | 工控軟件 | 人機界面 | 運動控制
          D C S | 工業以太網 | 現場總線 | 顯示調節儀表 | 數據采集 | 數傳測控 | 工業安全
          電 源 | 嵌入式系統 | PC based | 機柜箱體殼體 | 低壓電器 | 機器視覺
        VPLC系列機器視覺運動控制一體機快速入門(三)基于形狀匹配的視覺定位
        深圳市正運動技術有限公司
        收藏本文     查看收藏

          視頻教程:《視頻教程:VPLC系列機器視覺運動控制一體機快速入門(三)

          今天,正運動技術為大家分享一下VPLC系列機器視覺運動控制一體機快速入門(三)——基于形狀匹配的視覺定位。

          運動控制

          上期課程,我們講述了機器視覺方案實施的基礎即相機的基本使用內容,我們通過上期課程已經能實現使用ZDevelop軟件獲取圖像進行處理。

          本期課程我們和大家一起分享機器視覺方案中常用的基于形狀匹配的視覺定位功能。

          運動控制

          視覺定位是指在視覺檢測中通過學習特定的模板或某些固定的特征,在檢測區域內搜索滿足條件的特征,并返回特征在圖像坐標中的位置信息,如坐標位置X、坐標位置Y、角度。

          運動控制

          形狀匹配是基于邊緣方向梯度的匹配,它是提取ROI中的邊緣特征結合灰度信息創建模板,然后在檢測區域ROI范圍內搜索與模板的輪廓特征滿足一定相似程度的產品特征,并返回對應位置信息。

          運動控制

          形狀匹配特點

          1.適應性強:可適應光照和圖像的灰度變化。

          2.兼容性強:可以支持搜索缺失局部邊緣、有噪聲干擾、有輕微變形和失焦的目標。

          3.多目標搜索:支持同時搜索同一模板下的多個匹配目標。

          4.支持旋轉和縮放:在目標圖像存在旋轉或縮放的情況下仍然能匹配到目標,但是需要在設定的旋轉和縮放比例范圍內。

          模板選擇

          使用形狀匹配功能的前提是檢測目標要有唯一且固定的特征。

          1.在選擇模板時,需要確保特征是檢測目標唯一存在的特征,否則無法與其他檢測目標區分。

          2.盡量選擇圖像清晰形狀完整的標準產品作為模板,避免摻入噪點等干擾因素。

          3.盡量避免選擇對稱的特征作為模板。

          運動控制

          

          如圖,閃電是目標1唯一的特征,可以將目標1和目標2進行區分。

          運動控制

          

          1 目標定位

          運動控制

          

          在目標輪廓特征清晰且定位精度要求不高時,可直接使用形狀匹配輸出的位置結果做定位項目。

          2 產品計數

          運動控制

          

          對具有相同形狀特征的產品進行計數統計。

          3 位置跟隨

          運動控制

          

          當需要檢測的目標位置不固定時,一些檢測功能的ROI位置無法確定如檢測直線、檢測圓形等,我們可以利用檢測目標周邊有固定距離的特征進行位置跟隨。

          運動控制

          運動控制

          形狀匹配流程圖

          1、實例演示

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

         運動控制

          

          2、設計主界面。

          運動控制

          

          3、在global_variable.bas文件中定義全局變量。

          '''''全局變量大部分使用數組結構'''''

          ''注:basic編程中很多函數會以TABLE(系統的數據結構)做為參數

          ''在這里table均是做為中間變量

          ''table 0-20 作為匹配時使用到的中間變量

          ''table 50-70 作為roi繪制時的中間變量使用
         

          ''table 21-22,表示鼠標按鍵控件坐標系

          ''table 31-35,表示控件坐標轉換后對應的圖像坐標

          ''table 111-114,表示定位器區域roi參數,屬于控件坐標系

          ''table 121-124,表示橡皮擦區域roi參數,屬于控件坐標系
         

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

          '主任務狀態

          '0 - 未初始化

          '1 - 停止

          '2 - 運行中

          '3 - 正在停止

          GLOBAL DIM main_task_state

          main_task_state = 1
         

          '運行任務開關

          GLOBAL DIM run_switch

          run_switch = 0
         

          '采集任務開關

          '0 - 停止采集

          '1 - 請求采集

          GLOBAL DIM grab_switch

          grab_switch = 0
         

          '定位檢測主任務id - 10

          GLOBAL DIM main_task_id

          main_task_id = 10
         

          '相機連續采集線程id - 7

          GLOBAL DIM grab_task_id

          grab_task_id = 7
         

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

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

          '相機種類,"",此處使用?迪鄼C-"mvision"

          GLOBAL DIM CAMERA_TYPE(100)

          'CAMERA_TYPE = "mindvision;basler;mvision;huaray;basler;zmotion"

          CAMERA_TYPE = "mvision"
         

          '相機個數

          GLOBAL cam_num

          cam_num = 0
         

          '相機模式,-1 連續采集,0-觸發采集

          GLOBAL cam_mode

          cam_mode = 0
         

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

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

          GLOBAL DIM d_is_rtn_loc

          d_is_rtn_loc = 1
         

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

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

          GLOBAL DIM d_is_creModel

          d_is_creModel = 0
         

          '學習模板參數,starAngle、endAngle、minScale、maxScale、thresh、numlevel、reduce、angleStep、scaleStep

          GLOBAL DIM d_mod_param(9)
         

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

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

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

          GLOBAL DIM d_edit_m

          d_edit_m = 0
         

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

          GLOBAL DIM d_isMask_m

          d_isMask_m = 1
         

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

          GLOBAL DIM d_locator_roi(4),d_eraser_roi(4)
         

          '定義正方形橡皮擦尺寸寬度

          GLOBAL DIM d_eraser_size

          d_eraser_size = 5
         

          '定義界面控件上橡皮擦的矩形區域

          GLOBAL DIM c_rect(4)
         

          '定義鼠標狀態標志,0-表示鼠標處于松開狀態,1-表示鼠標處于按下狀態

          GLOBAL DIM d_mouse_s

          d_mouse_s = 0
         

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

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

          '匹配檢測參數,minScore、matchNum、minDist、thresh、accuracy、speed、polor

          GLOBAL DIM d_match_param(7)
         

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

          GLOBAL 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 grabImg

          GLOBAL ZVOBJECT subImg,copy_subImg,colorSubImg, s_mod

          GLOBAL ZVOBJECT modRe
         

          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 '默認縮放步長
         

             '初始化匹配測量參數

             d_match_param(0) = 50 '最小分數

             d_match_param(1) = 1 '匹配個數

             d_match_param(2) = 0 '默認最小間距

             d_match_param(3) = 40 '最小閾值

             d_match_param(4) = 0 '精度

             d_match_param(5) = 9 '速度

             d_match_param(6) = 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
         

          END SUB

          5、關聯主界面值顯示控件變量。

          運動控制

          6、在main.bas文件中添加主界面初始化函數。

          'HMI界面初始化函數,上電執行一次

          GLOBAL SUB hmi_init()
         

             grab_switch = 0 '初始化采集任務開關,不開啟采集任務

             main_task_state = 1 '初始化定位檢測主任務狀態為停止狀態1

             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_READIMAGE(grabImg,"1.bmp",1) '讀取.../flash目錄下的show.bmp的灰度圖像,存放到grabImg變量中

             ZV_LATCH(grabImg,0) '顯示到鎖存通道0中,作為顯示區域背景圖片
         

          END SUB

          7、在camera.bas文件中添加主界面中采集相關按鈕響應的函數并關聯動作函數。

          運動控制

          ↓

          end
         

          '主界面按下掃描相機按鈕時響應的函數

          GLOBAL SUB cam_scan_all()

             ZV_SETSYSINT("LogLevel", 7) '設置控制器信息

             ZV_SETSYSSTR("DataDir","")
         

             CAM_SCAN(CAMERA_TYPE) '掃描相機,CAMERA_TYPE="mvision"

             cam_num = CAM_COUNT() '獲取掃描到的相機數量

             if (0 = cam_num) then '如果相機數量=0,打印提示信息

             ? "未找到相機"
         

             return '退出子函數,不往下執行

             endif

             ?"cam_num = " cam_num '如果掃描到相機,打印相機數量

             cam_mode = 0 '設置軟觸發采集
         

             CAM_SEL(0) '選擇掃描到的第一個相機進行操作

             CAM_SETEXPOSURE(100000) '設置相機曝光時間為100000us

             CAM_SETMODE(cam_mode) '設置軟件觸發模式

             CAM_START(0) '開啟相機
         

          END SUB
         

          '主界面按下單次采集按鈕執行的函數

          GLOBAL SUB btn_grab()

             if cam_num = 0 then

                 ?"請先掃描相機!"

             return

             endif
         

             CAM_SETPARAM("TriggerSoftware", 0)

             CAM_GET(grabImg, 0)

             ZV_LATCH(grabImg, 0)
         

             ZV_IMGINFO(grabImg,3000) '獲取grabImg變量緩存的圖片的基本信息,并存放到起始地址為3000的table數組中
         

          end sub
         

          '主界面按下連續采集按鈕響應的函數

          GLOBAL SUB btn_cgrab()

             if grab_switch =1 then

                 ?"正在連續運行中,請勿重復操作!"

             return

          endif
         

          if cam_num = 0 then

                 ?"請先掃描相機!"

             return

          endif
         

          grab_switch = 1

          if (1 = grab_switch) then

             if (0 = PROC_STATUS(grab_task_id)) then

                 RUNTASK grab_task_id, grab_task

             endif

          endif
         

          end sub
         

          '采集任務實現函數

          grab_task:

             while(1)

             if (0 = grab_switch) then

                 exit while

                 endif
         

                 CAM_START(0) '開啟相機

                 CAM_SETPARAM("TriggerSoftware", 0)

                 CAM_GET(grabImg, 0)

                 ZV_LATCH(grabImg, 0)

             wend

          END
         

          '主界面按下停止采集按鈕響應的函數

          GLOBAL SUB btn_stopCgrab()

                 if grab_switch =0 then

                     ?"未開啟連續采集!"

                 return

             endif
         

             grab_switch = 0

          end sub

          ↓

          運動控制

          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中
         

             '圖像roi坐標轉控件roi

             is_redraw = 0

             d_is_rtn_loc = 0

             TABLE(111, d_locator_roi(0), d_locator_roi(1),d_locator_roi(2),d_locator_roi(3))

             ZV_POSFROMIMG(0, 2, 111, 111) '圖像坐標轉換到HMI控件坐標

             HMI_SHOWWINDOW(11)
         

          END SUB

          ↓

          運動控制

          10、在draw.bas文件中添加模板區域更新繪制函數。

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

          GLOBAL SUB update_locator()
         

             if mouse_scan(21) = 1 then '掃描鼠標按下操作

                 is_set_roi_m_down = 1

                 sr_mpos_x = table(21)

                 sr_mpos_y = table(22)

                 hit_pos = ZV_HMIADJRECT(sr_mpos_x, sr_mpos_y, 111, -1) '只有按下時可以改變擊中位置

                 is_redraw = 1

             endif
         

             if mouse_scan(21) = -1 then '掃描鼠標松開操作

                 is_set_roi_m_down = 0

                 sr_mpos_x = table(21)

                 sr_mpos_y = table(22)

                 ZV_HMIADJRECT(sr_mpos_x, sr_mpos_y, 111, hit_pos)

                 is_redraw = 1

             endif
         

             if (is_set_roi_m_down and MOUSE_state(21)) then

                 sr_mpos_x = table(21)

                 sr_mpos_y = table(22)

                 ZV_HMIADJRECT(sr_mpos_x, sr_mpos_y, 111, hit_pos)

                 is_redraw = 1

             endif
         

             if (1 = is_redraw) then

                 '控件roi坐標轉圖像roi坐標

                 is_redraw = 0

                 ZV_POSTOIMG(0, 2, 111, 50) 'TABLE(50)作為中間變量臨時使用

                 d_locator_roi(0) = TABLE(50)

                 d_locator_roi(1) = TABLE(51)

                 d_locator_roi(2) = TABLE(52)

                 d_locator_roi(3) = TABLE(53)

                 SET_REDRAW

             endif
         

          END SUB
         

          '根據更新的鼠標位置坐標繪制定位器roi

          GLOBAL SUB draw_locator()

             DRAWRECT(TABLE(111), TABLE(112), TABLE(113), TABLE(114))
         

             local cx,cy

             cx = (TABLE(111) + TABLE(113)) / 2

             cy = (TABLE(112) + TABLE(114)) / 2
         

             DRAWLINE(cx-5, cy, cx+5, cy) '中心十字線

             DRAWLINE(cx, cy-5, cx, cy+5)

          END SUB

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

          運動控制

          ↓

          '創建模板界面按下截取模板按鈕后響應的函數

          global sub btn_getSubImg()

             LOCAL mod_w,mod_h

             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)
         

             ZV_IMGINFO(subImg,0)

             mod_w = TABLE(0)

             mod_h = TABLE(1)
         

             ZV_REGENRECT(modRe,0,0,mod_w, mod_h)

             ZV_LATCHCLEAR(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)) '設置鎖存的大小

             SET_COLOR(RGB(0,255,0)) '設置繪制時畫筆使用的顏色
         

             ZV_LATCHCLEAR(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(21)     '鼠標處于按下狀態時

             eraser_pos_x = TABLE(21)

             eraser_pos_y = TABLE(22)
         

             c_size_eraser = ZV_LENFROMIMG(0, d_eraser_size)     '將橡皮擦的圖像尺寸轉換成控件尺寸

             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)

             '繪制以(eraser_pos_x,eraser_pos_y)為中心,2*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

                 SET_REDRAW(0,0, HMI_CONTROLSIZEX(12, 1), HMI_CONTROLSIZEY(12, 1))'重新繪制編輯模板窗口上的鎖存通道0區域

             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

             TABLE(121, c_rect(0), c_rect(1))

             ZV_POSTOIMG(1, 1, 121, 121)

             ZV_REGENRECT(tmp_re, TABLE(121), TABLE(122), 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 '如果編輯模板標志

                 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

             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)

             ZV_LATCH(colorSubImg, 2)
         

          end sub
         

          ↓

          運動控制

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

          運動控制

          ↓

          '編輯模板界面按下確定按鈕時執行的函數

          GLOBAL SUB btn_erase_cfm()

             ZV_LATCHCLEAR(0)

             ZV_LATCH(grabImg, 0) '顯示圖像在鎖存上

             HMI_CLOSEWINDOW(12) '關閉編輯模板窗口
         

          END SUB

          ↓

          運動控制

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

          運動控制

          ↓

          '創建模板界面按下測試按鈕時響應的函數

          GLOBAL SUB btn_loc_test()

             if (d_is_creModel = 0) then

                 ?"未創建模板!"

             return

             endif
         

             '開始匹配

             TICKS = 0

             ZVOBJECT match_rst, sImg, colorImg

             ZV_GAUSSBLUR(grabImg, sImg, 3)

             ZV_SHAPEFIND(s_mod, sImg, match_rst, d_match_param(0), d_match_param(1), d_match_param(2), d_match_param(3), d_match_param(4), d_match_param(5), d_match_param(6))

             ZV_MATINFO(match_rst, 0)

             ZV_GRAYTORGB(sImg, colorImg)
         

             if TABLE(0) > 0 then

                 local rowr

                 for rowr = 0 to TABLE(0)-1

                     ZV_MATGETROW(match_rst, rowr, 5, 3) '獲取match_rst矩陣中第rowr行的數據到table中,table最大長度5

                     if(rowr = 0) then

                     d_match_rst(0) = TABLE(3)

                     d_match_rst(1) = TABLE(4)

                     d_match_rst(2) = TABLE(5)

                     d_match_rst(3) = TABLE(6)

                     d_match_rst(4) = TABLE(7)

                     ZV_GETRIGIDVECTOR(mat_rigid1, 0, 0, 0, TABLE(4), TABLE(5), TABLE(6))'計算剛性變換矩陣

                     ZV_CONTAFFINE(contlist1, mat_rigid1, tsContlist1)'對輪廓或輪廓序列進行仿射變換

                     ZV_CONTLIST(colorImg, tsContlist1, ZV_COLOR(0, 255, 0), 0)'在colorSubImg圖像上繪制綠色的輪廓序列

                 endif

             next

          else
         

             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

          ↓

          運動控制

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

          運動控制

          ↓

          '創建模板界面按下確定按鈕時響應的函數

          GLOBAL SUB btn_loc_cfm()

             grab_switch = 0 '關閉補正源的連續采集

             d_is_rtn_loc = 1

             ZV_LATCHCLEAR(0)

             ZV_LATCH(grabImg, 0) '顯示圖像在鎖存上

             ZV_LATCH(grabImg, 1) '顯示圖像在鎖存上
         

             HMI_CLOSEWINDOW(11)
         

          END SUB

          ↓

          運動控制

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

          運動控制

          ↓

          '主界面按下單次執行按鈕時響應的函數

          GLOBAL SUB btn_test()

             btn_grab()            '單次采集圖像

             btn_loc_test()       '匹配測試函數
         

          END SUB

          ↓

          運動控制

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

          運動控制

          ↓

          '主界面點擊連續運行按鈕時響應的函數

          GLOBAL SUB btn_run()

             if(run_switch = 1) then

             ?"已開啟連續運行,請勿重復操作!"

             return

          endif
         

             run_switch = 1

             if (1 = run_switch) then

             if (0 = PROC_STATUS(main_task_id)) then

                 RUNTASK main_task_id, main_task

                 endif

             endif

          END SUB
         

          '連續運行主任務內容

          main_task:

             while(1)

                 if (0 = run_switch) then

                     exit while

                 endif
         

                 '以下執行相關定位操作

                 btn_grab()

                 btn_loc_test()

             wend
         

          END

          ↓

          運動控制

          

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

          運動控制

          ↓

          '主界面點擊停止執行按鈕時響應的函數

          GLOBAL SUB btn_stop()

                 if(run_switch = 0) then

                     ?"未開啟連續運行!"

                 return

             endif
         

             run_switch = 0

          END SUB

          ↓

          運動控制

          仿真演示效果

          

          運動控制

          

          本次,VPLC系列機器視覺運動控制一體機快速入門(三)——基于形狀匹配的視覺定位就分享到這里,更多精彩內容請關注“正運動小助手”公眾號。

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

          正運動技術專注于運動控制技術研究和通用運動控制軟硬件產品的研發,是國家級高新技術企業。正運動技術匯集了來自華為、中興等公司的優秀人才,在堅持自主創新的同時,積極聯合各大高校協同運動控制基礎技術的研究,是國內工控領域發展最快的企業之一,也是國內少有、完整掌握運動控制核心技術和實時工控軟件平臺技術的企業。主要業務有:運動控制卡_運動控制器_EtherCAT運動控制卡_EtherCAT控制器_運動控制系統_視覺控制器__運動控制PLC_運動控制_機器人控制器_視覺定位_XPCIe/XPCI系列運動控制卡等等。


         

        狀 態: 離線

        公司簡介
        產品目錄

        公司名稱: 深圳市正運動技術有限公司
        聯 系 人: 戴德弟
        電  話: 0755-32976042
        傳  真: 0755-2606 6955
        地  址: 深圳市寶安區西鄉洲石路陽光工業園A1棟5樓
        郵  編: 518100
        主  頁:
         
        該廠商相關技術文摘:
        強實時運動控制內核MotionRT750(十):運動控制中的微調軌跡動態補償
        機器視覺運動控制一體機在大功率共模電感多面AI外觀缺陷檢測應用
        MotionRT750 SoftMotion:XPCIE1032H超高速運動控制卡在AOI檢測設備上的應用
        強實時運動控制內核MotionRT750(九):內置C語言的自定義機械手模型實現
        NEPCON ASIA 2025:解鎖行業新機遇,我們在深圳等您
        開放式激光振鏡運動控制器在旋轉飛行打標中的應用
        強實時運動控制內核MotionRT750(八):us級高速交互之LabVIEW,為智能裝備提速
        液態點膠密封解決方案,柔性升級,密封更可靠!
        柔性機械手視覺供料解決方案,提升無序分揀效率!
        【2025上海工博會】正運動展位智造未來(二)
        【2025上海工博會】正運動展位智造未來(一)
        【2025上海工博會】機器視覺運動控制一體機應用預覽(三)
        更多文摘...
        立即發送詢問信息在線聯系該技術文摘廠商:
        用戶名: 密碼: 免費注冊為中華工控網會員
        請留下您的有效聯系方式,以方便我們及時與您聯絡

        關于我們 | 聯系我們 | 廣告服務 | 本站動態 | 友情鏈接 | 法律聲明 | 不良信息舉報
        工控網客服熱線:0755-86369299
        版權所有 中華工控網 Copyright©2022 Gkong.com, All Rights Reserved

        主站蜘蛛池模板: 男人av天堂专区| 久久精品国产只有精品66| 国产精品综合av一区二区国产馆| 在线播放国产女同闺蜜| 亚洲久悠悠色悠在线播放| 少妇高潮喷水惨叫久久久久电影| 国产欧美另类精品久久久| 四虎国产精品永久一区高清| 亚洲精品片911| 免费av网站| 亚洲中文久久久久久精品国产| 国模在线视频一区二区三区| 亚洲第一极品精品无码久久| 国产AV影片麻豆精品传媒| 99久久精品久久久久久清纯| 香蕉在线精品一区二区| 又爽又黄又无遮挡网站| 亚洲国产99精品国自产拍| 人人爽人人爽人人片av东京热| 亚洲中文精品人人永久免费| 国产成人精品无人区一区| 热久久这里只有精品99| 久久久久久综合网天天| 亚洲VA中文字幕无码久久不卡| 17岁日本免费bd完整版观看| 中文字幕在线国产有码| 熟女人妻视频| 看全色黄大黄大色免费久久| 天天澡日日澡狠狠欧美老妇| 免费无遮挡毛片中文字幕| 国产在线拍揄自揄视精品不卡| 手机在线看永久AV片免费 | 国产免费人成网站在线播放| 亚洲精品日本久久一区二区三区 | 无码精品人妻一区二区三李一桐 | 日韩激情成人| 亚洲春色在线视频| 777米奇色狠狠888俺也去乱| 中文毛片无遮挡高潮| 性欧美大战久久久久久久| 亚洲色成人网站www永久四虎|