美女网站一区二区_在线观看日韩毛片_成人在线视频首页_欧美精品一区二区三区久久久_国产精品亚洲一区二区三区在线_日本免费新一区视频_日本美女一区二区三区_精品亚洲成a人_久久不见久久见免费视频1_91首页免费视频_欧美一区二区在线看_91精品91久久久中77777_天堂蜜桃一区二区三区_av在线一区二区_欧美不卡一区二区_欧美影视一区二区三区

產(chǎn)品分類

當(dāng)前位置: 首頁 > 工業(yè)控制產(chǎn)品 > 自動化控制 > PLC可編程控制器

類型分類:
科普知識
數(shù)據(jù)分類:
PLC可編程控制器

VPLC系列機(jī)器視覺運(yùn)動控制一體機(jī)快速入門(十)

發(fā)布日期:2022-04-25 點(diǎn)擊率:58

  • 關(guān)鍵詞:正運(yùn)動技術(shù),機(jī)器視覺,運(yùn)動控制器


  • 摘要:此前,我們依次講解了軟硬件介紹及計數(shù)實(shí)例、相機(jī)的基本使用、基于形狀匹配的視覺定位、BLOB有無檢測、測量尺寸、機(jī)器視覺方案中使用到的標(biāo)定功能、ZDevelop軟件實(shí)現(xiàn)識別條形碼和二維碼,測量點(diǎn)/直線/圓以及劃痕檢測功能。


image.png


此前,我們依次講解了軟硬件介紹及計數(shù)實(shí)例、相機(jī)的基本使用、基于形狀匹配的視覺定位、BLOB有無檢測、測量尺寸、機(jī)器視覺方案中使用到的標(biāo)定功能、ZDevelop軟件實(shí)現(xiàn)識別條形碼和二維碼,測量點(diǎn)/直線/圓以及劃痕檢測功能。


本期課程我們和大家一起使用ZDevelop軟件實(shí)現(xiàn)機(jī)器視覺中使用到的OCR功能。


image.png


一OCR 檢測原理


什么是OCR?


OCR全稱是Optical Character Recognition,即光學(xué)字符識別。在機(jī)器視覺中OCR是指使用圖像處理方法將獲取到的圖像上的黑白字符進(jìn)行分割訓(xùn)練后,識別并輸出對應(yīng)的字符。


image.png

輸入圖像


OCR的檢測原理?


在機(jī)器視覺中進(jìn)行OCR檢測時,首先根據(jù)字符(前景)和背景的對比度以及字符的寬度和高度等參數(shù)將字符進(jìn)行分割后提取字符圖像,然后對提取的字符逐一進(jìn)行訓(xùn)練學(xué)習(xí),將所有可能出現(xiàn)的字符進(jìn)行訓(xùn)練學(xué)習(xí)后存儲到訓(xùn)練庫中,在執(zhí)行識別檢測時,將當(dāng)前提取到的字符和訓(xùn)練庫中的字符進(jìn)行對比,輸出相似度滿足條件的字符結(jié)果。


image.png


二OCR 應(yīng)用場景


1.驗(yàn)證字符準(zhǔn)確性


可以驗(yàn)證待測產(chǎn)品上印刷字符的準(zhǔn)確性。


2.獲取產(chǎn)品字符信息


可以獲取待測產(chǎn)品上的字符信息上傳數(shù)據(jù)庫或錄入系統(tǒng)。


3.信息對比


可以將待測產(chǎn)品識別出的字符和條碼輸出的信息進(jìn)行對比,判斷字符印刷和條碼信息是否一致。


三軟件實(shí)現(xiàn)


(一)流程圖


image.png


(二)實(shí)例演示


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


image.png


2.設(shè)計HMI界面。


image.png


3.在global_variable.bas文件中定義全局變量,定義完成后運(yùn)行Hmi.hmi文件。


'''''全局變量大部分使用數(shù)組結(jié)構(gòu)'''''

''注:basic編程中很多函數(shù)會以TABLE(系統(tǒng)的數(shù)據(jù)結(jié)構(gòu))做為參數(shù)

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


''table 21-22,鼠標(biāo)按鍵,控件坐標(biāo)系

''table 31-35,旋轉(zhuǎn)矩ROI參數(shù),cx、cy、width、height、angle,控件坐標(biāo)系

''table 41-45,旋轉(zhuǎn)矩形控件坐標(biāo)轉(zhuǎn)換后對應(yīng)的圖像坐標(biāo),圖像坐標(biāo)系


'主任務(wù)狀態(tài)

'0 - 未初始化

'1 - 停止

'2 - 運(yùn)行中

'3 - 正在停止

GLOBAL DIM main_task_state

main_task_state = 1


'采集開關(guān)

'0 - 停止采集

'1 - 請求采集

GLOBAL DIM grab_switch

grab_switch = 0


'相機(jī)個數(shù)

GLOBAL cam_num

cam_num = 0


'相機(jī)種類,"zmotion;mvision;basler;mindvision;huaray"

GLOBAL DIM CAMERA_TYPE(16)

CAMERA_TYPE = "mvision"



' 定義主任務(wù)id - 10

GLOBAL DIM main_task_id

main_task_id = 10


'定義連續(xù)采集任務(wù)id - 9

GLOBAL DIM grab_task_id

grab_task_id = 9



'定義全局圖像變量

GLOBAL ZVOBJECT grabImg '采集圖像


'定義常用顏色變量

GLOBAL C_RED, C_GREEN, C_BLUE, C_YELLOW

C_RED   = RGB(255,  0,  0)

C_GREEN = RGB(  0,255,  0)

C_BLUE  = RGB(  0,  0,255)

C_YELLOW= RGB(255,255,  0)


'訓(xùn)練的字符庫、輸出的字符結(jié)果

GLOBAL DIM  nameSample(32),result(32)


'旋轉(zhuǎn)矩形ROI參數(shù):cx、cy、width、height、angle

GLOBAL DIM d_roi_rect2(5) 



'檢測參數(shù):閾值模式、閾值參數(shù)、最小字符面積、最大字符面積、最小字符寬度、最大字符寬度、最小字符高度、最大字符高度、字符極性、形態(tài)學(xué)類型、結(jié)構(gòu)元寬、結(jié)構(gòu)元高、字符最小間距

GLOBAL DIM d_detect_param(13) 



'***********定義讀取本地文件功能相關(guān)變量**************

''注意,該功能只在使用仿真器時有效

'定義是否使用本地圖片標(biāo)志

GLOBAL DIM d_use_imgfile

d_use_imgfile=1


'定義本地圖片索引

GLOBAL DIM d_index

d_index=0


'定義讀取圖片的路徑

GLOBAL DIM File_Name(100)   


'***********結(jié)束定義讀取本地文件功能相關(guān)變量**********


'運(yùn)行HMI文件

RUN "Hmi1.hmi",1

4.在InitParam.bas文件中初始化測量參數(shù)。


end


GLOBAL SUB init_detect_param()'初始化測量參數(shù)

  '初始化roi參數(shù)

  d_roi_rect2(0) = 160.0      'roi中心x

  d_roi_rect2(1) = 120.0      'roi中心y

  d_roi_rect2(2) = 80.0       'roi寬

  d_roi_rect2(3) = 60.0       'roi高

  d_roi_rect2(4) = 0.0        'roi角度

  TABLE(31) = d_roi_rect2(0) '將roi變量賦值給起始地址為31的table數(shù)組

  TABLE(32) = d_roi_rect2(1)

  TABLE(33) = d_roi_rect2(2)

  TABLE(34) = d_roi_rect2(3)

  TABLE(35) = d_roi_rect2(4)  

  

  '初始化檢測參數(shù):閾值模式、閾值參數(shù)、最小字符面積、最大字符面積、最小字符寬度、最大字符寬度、最小字符高度、最大字符高度、字符極性、形態(tài)學(xué)類型、結(jié)構(gòu)元寬、結(jié)構(gòu)元高、字符最小間距

  d_detect_param(0) = 0      '手動閾值

  d_detect_param(1) = 187    '低閾值

  d_detect_param(2) = 500    '最小字符面積

  d_detect_param(3) = 80000  '最大字符面積

  d_detect_param(4) = 10     '最小字符寬度

  d_detect_param(5) = 500    '最大字符寬度

  d_detect_param(6) = 10     '最小字符高度

  d_detect_param(7) = 500    '最大字符高度

  d_detect_param(8) = 1      '白底黑字

  d_detect_param(9) = 1      '開運(yùn)算

  d_detect_param(10) = 1     '結(jié)構(gòu)元寬,正奇數(shù)

  d_detect_param(11) = 10    '結(jié)構(gòu)元高,正奇數(shù)

  d_detect_param(12) = 1     '字符最小間距

  nameSample=""              '初始化訓(xùn)練字符樣本為空字符串

  result=" "                 '初始化字符結(jié)果變量為空字符串

  

END SUB

5.關(guān)聯(lián)HMI界面值顯示控件變量。


image.png


具體變量關(guān)聯(lián)操作可參考視頻中相關(guān)內(nèi)容或獲取程序代碼進(jìn)行參考。


6.在main.bas文件中添加HMI界面初始化函數(shù)并在Hmi系統(tǒng)設(shè)置中關(guān)聯(lián)初始化函數(shù)。


'HMI界面初始化函數(shù)

GLOBAL SUB hmi_init()


  grab_switch = 0            '初始化采集開關(guān)為停止采集

  main_task_state = 1        '初始化主任務(wù)狀態(tài)為停止?fàn)顟B(tài)

  

  '初始化時依據(jù)圖像分辨率設(shè)置區(qū)域的裁剪尺寸,此處圖像分辨率為1280x960

  ZV_RESETCLIPSIZE(1280, 960)

  '設(shè)置鎖存通道0的大小,以適應(yīng)圖片元件控件大小

  ZV_LATCHSETSIZE(0, HMI_ConTROLSIZEX(10, 1), HMI_ConTROLSIZEY(10, 1))  

  ZV_SETSYSINT("LineWidth",5)               '設(shè)置繪制畫筆寬度為5個像素

 

  init_detect_param() '初始化測量參數(shù)  

  ZV_LATCHCLEAR(0)    '清空鎖存通道0

  

END SUB

image.png


7.在camera.bas文件中添加HMI界面中采集相關(guān)按鈕響應(yīng)的函數(shù)并關(guān)聯(lián)動作函數(shù)。


image.png

相機(jī)操作相關(guān)按鈕

end



'主界面按下掃描相機(jī)按鈕時響應(yīng)的函數(shù)

GLOBAL SUB cam_scan_all()


    if(d_use_imgfile=1)then 

      ?"請先按下使用本地圖片按鈕關(guān)閉該功能"

    return 

  endif 

  

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

  ZV_SETSYSSTR("DataDir","")

    

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

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

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

    ? "未找到相機(jī)"    

    return                       '退出子函數(shù),不往下執(zhí)行

  endif

  ?"cam_num = " cam_num            '如果掃描到相機(jī),打印相機(jī)數(shù)量

  

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

  CAM_SETEXPOSURE(5000)           '設(shè)置相機(jī)曝光時間為5000us      

  CAM_SETMODE(0)            '設(shè)置軟件觸發(fā)模式

  CAM_START(0)                     '開啟相機(jī)  

  

END SUB


'主界面按下單次采集按鈕執(zhí)行的函數(shù)

GLOBAL SUB btn_grab()


    '如果d_use_imgfile=1時使用讀取本地圖片功能,使用控制器時請將此部分代碼注釋掉

    if (d_use_imgfile=1) then 

      if(d_index=3) then 

       d_index=0

    endif

    File_Name="10"+TOSTR(d_index,1,0)+".bmp"   '.../flash/10/目錄下的圖片所在的路徑名稱

    ZV_IMGREAD(grabImg,File_Name,1)

    ZV_LATCH(grabImg, 0) 

    d_index=d_index+1

  return   

  endif

    ''讀取本地圖片功能結(jié)束

  

  '如果相機(jī)數(shù)量為0,提示先掃描相機(jī),并退出子函數(shù)不往下執(zhí)行

    if cam_num = 0   then 

       ?"請先掃描相機(jī)!"

     return 

    endif

  

  CAM_SETPARAM("TriggerSoftware", 0)  '發(fā)送觸發(fā)指令

  CAM_GET(grabImg, 0)                 '獲取一幀圖像存放到grabImg變量中

  ZV_LATCH(grabImg, 0)                '將圖像顯示到鎖存通道0中

  

END SUB


'主界面按下連續(xù)采集按鈕響應(yīng)的函數(shù)

GLOBAL SUB btn_cgrab()

    if grab_switch =1 then                 '如果已經(jīng)處于連續(xù)執(zhí)行狀態(tài),打印提示信息并退出函數(shù)

       ?"正在連續(xù)運(yùn)行中,請勿重復(fù)操作!"

     return 

  endif

  

  if( d_use_imgfile =0) then '如果使用相機(jī)采集功能         

  

    if cam_num = 0   then    '判斷如果相機(jī)數(shù)量=0,打印提示信息并退出函數(shù)        

       ?"請先掃描相機(jī)!"

     return 

      endif

  endif

  

  grab_switch = 1            '采集任務(wù)開關(guān)置1

  if (1 = grab_switch) then

    if (0 = PROC_STATUS(grab_task_id)) then

      RUNTASK  grab_task_id, grab_task  '開啟連續(xù)采集任務(wù)

    endif

  endif

  

END SUB


'采集任務(wù)實(shí)現(xiàn)函數(shù)

grab_task:

  while(1)

    if (0 = grab_switch) then  '如果采集任務(wù)開關(guān)=0即停止采集按鈕按下時

      exit while             '退出循環(huán)

    endif

      

    'grab_switch=1時重復(fù)執(zhí)行以下操作

     btn_grab()'單次采集按鈕響應(yīng)的函數(shù)

  wend

END



'主界面按下停止采集按鈕響應(yīng)的函數(shù)

GLOBAL SUB btn_stopCgrab()

    if grab_switch =0 then  '如果已經(jīng)處于停止采集狀態(tài),打印提示信息并退出函數(shù)

       ?"未開啟連續(xù)采集!"

     return 

  endif

  

  grab_switch = 0          '將采集任務(wù)開關(guān)置0

END SUB

8.在draw.bas文件中添加檢測ROI更新繪制函數(shù),并在自定義元件屬性窗口中關(guān)聯(lián)刷新函數(shù)和繪制函數(shù)。


end


'和繪制(即選擇ROI)有關(guān)的界面的刷新繪制函數(shù)放在這個bas文件里


  DIM is_redraw  '繪圖標(biāo)志,0表示未進(jìn)行繪制,1表示正在進(jìn)行繪制

  is_redraw = 0

  

  DIM hit_pos    '定義調(diào)整操作標(biāo)志


'根據(jù)鼠標(biāo)操作更新ROI位置區(qū)域函數(shù)

GLOBAL SUB update_roi()

  

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

        '只有按下時可以改變擊中位置,獲取鼠標(biāo)點(diǎn)擊位置對應(yīng)的擊中區(qū)域編號

      hit_pos = ZV_HMIADJRECT2(table(21), table(22), 31, -1) 

      is_redraw = 1            '繪圖標(biāo)志置1

    endif


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

        '根據(jù)區(qū)域編號調(diào)整roi區(qū)域位置

      ZV_HMIADJRECT2(table(21), table(22), 31, hit_pos)

      is_redraw = 1              '繪圖標(biāo)志置1

    endif

  

    if (MOUSE_state(21)) then    '鼠標(biāo)按下時

        '根據(jù)區(qū)域編號調(diào)整roi區(qū)域位置

      ZV_HMIADJRECT2(table(21), table(22), 31, hit_pos)

      is_redraw = 1              '繪圖標(biāo)志置1

    endif

  

    if (1 = is_redraw) then       '如果繪制標(biāo)志=1

    

      is_redraw = 0              '繪圖標(biāo)志置0

      '控件roi坐標(biāo)轉(zhuǎn)圖像roi坐標(biāo),控件坐標(biāo)存放在起始地址為111的數(shù)組,圖像坐標(biāo)存放在起始地址為50的數(shù)組

      ZV_POSTOIMG(0, 1, 31, 41)

      d_roi_rect2(0) = TABLE(41)'將圖像坐標(biāo)的數(shù)據(jù)賦值給ROI變量

      d_roi_rect2(1) = TABLE(42)

      d_roi_rect2(2) = ZV_LENTOIMG(0, TABLE(33))

      d_roi_rect2(3) = ZV_LENTOIMG(0, TABLE(34))

      d_roi_rect2(4) = TABLE(35)

      SET_REDRAW  '重新繪制全部區(qū)域

    endif  

END SUB


'ROI區(qū)域更新后實(shí)時繪制ROI區(qū)域

GLOBAL SUB draw_roi()

  

    SET_COLOR(C_BLUE)    '設(shè)置畫筆顏色為藍(lán)色

    ZV_HMIRECT2(31, 300) '將旋轉(zhuǎn)矩形roi分解為HMI支持的繪圖圖元并添加控制參數(shù),便于HMI繪圖顯示

    DRAWLINE(TABLE(300), TABLE(301), TABLE(302), TABLE(303)) '繪制外矩形

    DRAWLINE(TABLE(302), TABLE(303), TABLE(304), TABLE(305))

    DRAWLINE(TABLE(304), TABLE(305), TABLE(306), TABLE(307))

    DRAWLINE(TABLE(306), TABLE(307), TABLE(300), TABLE(301))

    

    DRAWLINE(TABLE(308), TABLE(309), TABLE(310), TABLE(311)) '繪制方向箭頭

    DRAWLINE(TABLE(312), TABLE(313), TABLE(310), TABLE(311))

    DRAWLINE(TABLE(314), TABLE(315), TABLE(310), TABLE(311))

    

END SUB


image.png


9.在main.bas文件中添加HMI界面按下【提取訓(xùn)練】按鈕時響應(yīng)的函數(shù)并關(guān)聯(lián)動作函數(shù)名。


'HMI界面按下提取字符按鈕時響應(yīng)的函數(shù)

GLOBAL SUB btn_segment()

    '定義檢測需要用到的變量:分割參數(shù)、樣本圖片庫、訓(xùn)練樣本庫、OCR分類器、結(jié)果圖片

    GLOBAL ZVOBJECT param,sample,trainSample,ocr,colorImg

  '根據(jù)界面輸入?yún)?shù)生成分割參數(shù)

  ZV_OCRSEGSETPARAM_(param,d_detect_param(0),d_detect_param(1),d_detect_param(2),d_detect_param(3),d_detect_param(4),d_detect_param(5),d_detect_param(6),d_detect_param(7),d_detect_param(8),d_detect_param(9),d_detect_param(10),d_detect_param(11),d_detect_param(12))

  '根據(jù)分割參數(shù)和檢測區(qū)域進(jìn)行字符分割,分割的字符樣本圖片存放到sample變量中

  ZV_OCRSEGCHAr_(grabImg,param,sample,d_roi_rect2(0),d_roi_rect2(1),d_roi_rect2(2),d_roi_rect2(3),d_roi_rect2(4))

  '獲取樣本數(shù)量,存放到table(100)中

  ZV_OCRSAMPLECNT_(sample,100)

  '灰度圖轉(zhuǎn)換到RGB圖,作為結(jié)果圖像

  ZV_GRAYTORGB(grabImg, colorImg)

  if(TABLE(100)>0) then  '如果識別到的字符數(shù)量大于0

    for i=0 to TABLE(100)-1'根據(jù)識別到的字符次數(shù)進(jìn)行循環(huán)

      

    ZV_OCRSAMPLERECT2_(sample,i,150)'獲取每個樣本字符的最小外接矩陣,用于顯示分割結(jié)果

    '將樣本的最小外接矩陣?yán)L制到界面中

      ZV_RECT2(colorImg,table(150),table(151),table(152),table(153),table(154),C_GREEN)

    next

  elseif (TABLE(100)=0) then  '如果未分割提取到字符

      ?"未成功分割提取出字符!"  '打印提示并退出執(zhí)行

    return 

  endif

  ZV_LATCH(colorImg,0)'在鎖存通道0中顯示結(jié)果圖像

  

  if (STRCOMP(nameSample, "")=0)then '如果輸入的訓(xùn)練字符樣本是空的

     ?"請先輸入訓(xùn)練字符樣本再重新分割訓(xùn)練!" '打印提示

     return '返回子函數(shù),不往下執(zhí)行

  endif

  

  '清空OCR分類器

  ZV_CLEAR(ocr)

  if(ZV_ISEMPTY(trainSample)=0) then '如果訓(xùn)練樣本庫不為空

    ZV_OCRSAMPLECLR_(trainSample)'在訓(xùn)練字符之前先清空樣本庫

  endif

  '根據(jù)輸入的訓(xùn)練庫字符生成訓(xùn)練樣本庫

  ZV_OCRSAMPLEAPP_(sample,trainSample,nameSample)

  '使用訓(xùn)練樣本庫訓(xùn)練分類器,0.8為優(yōu)化參數(shù)(懲罰系數(shù)),表示分類器的預(yù)測能力, 越小預(yù)測能力越強(qiáng)但越容易出錯,范圍[0,1],建議 0.8;

  '0.15為徑向基核參數(shù),表示非線性映射能力,值越大非線 性映射能力就越強(qiáng),范圍[0,1],建議 0.15

  ZV_OCRTRAINSVM_(trainSample,ocr,0.8,0.15)

  if(ZV_ISEMPTY(ocr)=0) then '如果分類器訓(xùn)練成功

    ?"字符分割訓(xùn)練已完成!"     '打印成功提示

    else                      

    ?"訓(xùn)練字符和分割提取的字符不匹配!"

  endif

  

END SUB

image.png


10.在main.bas文件中添加HMI界面按下【識別】按鈕時響應(yīng)的函數(shù)并關(guān)聯(lián)動作函數(shù)名。


'HMI界面按下識別按鈕時響應(yīng)的函數(shù)

GLOBAL SUB btn_test()

    

  result=" " '清空字符結(jié)果變量

  

  '根據(jù)界面輸入?yún)?shù)生成分割參數(shù)

  ZV_OCRSEGSETPARAM_(param,d_detect_param(0),d_detect_param(1),d_detect_param(2),d_detect_param(3),d_detect_param(4),d_detect_param(5),d_detect_param(6),d_detect_param(7),d_detect_param(8),d_detect_param(9),d_detect_param(10),d_detect_param(11),d_detect_param(12))

  '根據(jù)分割參數(shù)和檢測區(qū)域進(jìn)行字符分割,分割的字符樣本存放到sample變量中

  ZV_OCRSEGCHAr_(grabImg,param,sample,d_roi_rect2(0),d_roi_rect2(1),d_roi_rect2(2),d_roi_rect2(3),d_roi_rect2(4))

  '獲取分割到的字符數(shù)量,存放到table(100)中

  ZV_OCRSAMPLECNT_(sample,100)

  if(TABLE(100)=0) then  '如果未分割提取到字符

    ?"未成功分割提取出字符!" '打印提示并退出執(zhí)行

    return 

  endif

  '使用訓(xùn)練樣本和分類器識別字符并輸出字符結(jié)果到起始地址為50的變量中

  ZV_OCRCLASSIFYSVM_(ocr,sample,32,50)

  '獲取識別到的字符數(shù)量,存放到table(100)中

  ZV_OCRSAMPLECNT_(sample,100)

  '灰度圖轉(zhuǎn)換到RGB圖,作為結(jié)果圖像

  ZV_GRAYTORGB(grabImg, colorImg)

  if(TABLE(100)>0) then  '如果識別到的字符數(shù)量大于0

    for i=0 to TABLE(100)-1'將字符結(jié)果循環(huán)賦值給結(jié)果變量顯示到界面中

      result(i)=TABLE(50+i)

    ZV_OCRSAMPLERECT2_(sample,i,150)'獲取每個樣本字符的最小外接矩陣,用于顯示分割結(jié)果

    '將樣本的最小外接矩陣?yán)L制到界面中

      ZV_RECT2(colorImg,table(150),table(151),table(152),table(153),table(154),C_GREEN)

    next

  endif

  ZV_LATCH(colorImg,0)'在鎖存通道0中顯示結(jié)果圖像

END SUB


image.png


11.在main.bas文件中添加【運(yùn)行】按鈕響應(yīng)的函數(shù)并關(guān)聯(lián)動作函數(shù)。


'HMI界面按下運(yùn)行按鈕時響應(yīng)的函數(shù)

GLOBAL SUB btn_run()


    if(2 = main_task_state) then  '如果主任務(wù)處于運(yùn)行中狀態(tài)

     ?"已經(jīng)開啟連續(xù)運(yùn)行任務(wù),請勿重復(fù)操作!" '打印提示

     return 

  endif

  

  if (1 = main_task_state) then  '如果主任務(wù)處于停止?fàn)顟B(tài)

    if (0 = PROC_STATUS(main_task_id)) then'如果程序中任務(wù)未開啟

      main_task_state = 2  '將主任務(wù)狀態(tài)設(shè)置為運(yùn)行中狀態(tài)

      RUNTASK  main_task_id, main_task'開啟主任務(wù)

    endif

  endif

  

END SUB


'主任務(wù)執(zhí)行的函數(shù)

main_task:

  while(1)

        '如果主任務(wù)狀態(tài)處于正在停止?fàn)顟B(tài)即停止按鈕按下時

    if (3 = main_task_state) then

      main_task_state = 1'將主任務(wù)狀態(tài)設(shè)置為停止?fàn)顟B(tài)

      exit while        '退出循環(huán)

    endif

    

    '否則循環(huán)執(zhí)行采集和識別函數(shù)

    btn_grab()

    btn_test()

    

  wend

END


image.png

12.在main.bas文件中添加【停止】按鈕響應(yīng)的函數(shù)并關(guān)聯(lián)動作函數(shù)。


'HMI界面按下停止按鈕時響應(yīng)的函數(shù)

GLOBAL SUB btn_stop()


  if (2 = main_task_state) then '如果主任務(wù)狀態(tài)處于2即任務(wù)運(yùn)行中時

     main_task_state = 3         '將主任務(wù)狀態(tài)置為3,退出循環(huán)

  endif

  

END SUB

image.png

(三)仿真演示效果


image.pngimage.png

image.png


本次,正運(yùn)動技術(shù)VPLC系列機(jī)器視覺運(yùn)動控制一體機(jī)快速入門(十)——OCR功能,就分享到這里。


更多精彩內(nèi)容請關(guān)注“正運(yùn)動小助手”公眾號,需要相關(guān)開發(fā)環(huán)境與例程代碼,請咨詢正運(yùn)動技術(shù)銷售工程師:400-089-8936。


本文由正運(yùn)動技術(shù)原創(chuàng),歡迎大家轉(zhuǎn)載,共同學(xué)習(xí),一起提高中國智能制造水平。文章版權(quán)歸正運(yùn)動技術(shù)所有,如有轉(zhuǎn)載請注明文章來源。


下一篇: PLC、DCS、FCS三大控

上一篇: 會PLC也能玩轉(zhuǎn)機(jī)器視

推薦產(chǎn)品

更多
美女网站一区二区_在线观看日韩毛片_成人在线视频首页_欧美精品一区二区三区久久久_国产精品亚洲一区二区三区在线_日本免费新一区视频_日本美女一区二区三区_精品亚洲成a人_久久不见久久见免费视频1_91首页免费视频_欧美一区二区在线看_91精品91久久久中77777_天堂蜜桃一区二区三区_av在线一区二区_欧美不卡一区二区_欧美影视一区二区三区


        国产欧美日韩一区二区三区| 黑人巨大精品欧美一区| 日韩三级视频中文字幕| 欧美在线免费播放| 欧美综合一区二区三区| 欧美色图免费看| 欧美日韩亚洲综合| 欧美乱妇15p| 日韩视频在线你懂得| 久久综合九色综合欧美就去吻| 久久嫩草精品久久久久| 国产精品美女久久久久aⅴ | 亚洲午夜影视影院在线观看| 亚洲乱码国产乱码精品精小说 | 一区二区三区欧美| 亚洲成人777| 紧缚奴在线一区二区三区| 成人毛片在线观看| 国产乱码精品一区二区三区日韩精品 | 精品久久久久久久久久久久包黑料| 久久色在线视频| 亚洲综合在线电影| 精品中文字幕一区二区小辣椒 | 国产一区二区三区蝌蚪| 99re8在线精品视频免费播放| 国产精品二区在线| 亚洲午夜精品一区二区三区| 欧美日本在线视频| 国产免费久久精品| 亚洲电影第三页| 国产成人精品亚洲日本在线桃色 | 久久久欧美精品sm网站| 一区二区在线看| 国精产品一区一区三区mba视频| www.亚洲精品| 日本免费一区二区三区| 91精品国产色综合久久久蜜香臀| 国产女人18毛片水真多成人如厕| 亚洲国产成人精品视频| 国产成人精品免费在线| 9i看片成人免费高清| 欧美精品久久久| 日韩一区二区三区视频在线观看| 亚洲欧洲国产专区| 国产一区二区三区国产| 久久99欧美| 这里只有精品电影| 一区二区三区四区在线免费观看| 国产一区二区三区不卡在线观看| 久久久久久a亚洲欧洲aⅴ| 91.xcao| 亚洲在线中文字幕| 91蜜桃视频在线| 在线观看视频一区二区| 欧美三级在线视频| 亚洲啪啪综合av一区二区三区| 国内一区二区在线| 日韩av电影免费在线观看| 精品美女一区二区| 麻豆精品视频在线观看视频| 国产综合动作在线观看| 欧美一级视频精品观看| 午夜视频在线观看一区| 91久久精品www人人做人人爽| 欧美亚洲愉拍一区二区| 亚洲视频在线观看一区| thepron国产精品| 欧美综合一区二区三区| 一区二区三区小说| 国产精品露出视频| 2021国产精品久久精品| 精品综合免费视频观看| 水蜜桃亚洲一二三四在线| 国产精品免费久久久久| 99久久99久久久精品齐齐| 欧美色视频在线| 天堂影院一区二区| 久久久久高清| 国产欧美日产一区| 99久久精品免费精品国产| 欧美人与z0zoxxxx视频| 日韩电影在线看| 欧美另类一区| 日韩理论片一区二区| 91同城在线观看| 欧美一区二区三区四区五区| 免费在线观看日韩欧美| 色噜噜一区二区| 亚洲欧洲综合另类| 国产欧美一区二区三区不卡高清| 欧美大度的电影原声| 精品一区二区国语对白| 在线中文字幕一区| 日本va欧美va精品| 一本久久a久久精品亚洲| 亚洲国产一区二区三区| 日韩欧美三级一区二区| 一区二区三区不卡视频在线观看 | 欧美午夜免费| 亚洲欧洲三级电影| 国产欧美日韩一区| 亚洲欧洲av在线| 国内精品久久国产| 亚洲欧洲性图库| 狠狠色综合色区| 国产精品电影院| 久久久综合香蕉尹人综合网| 专区另类欧美日韩| 老牛影视免费一区二区| 亚洲另类一区二区| 日本福利一区二区三区| 亚洲第一电影网| 一区二区三区的久久的视频| 丝袜a∨在线一区二区三区不卡| 一本一生久久a久久精品综合蜜 | 成人丝袜18视频在线观看| 日韩精品一区二区三区中文精品| 成人丝袜视频网| 日本一区二区视频在线| 国产综合动作在线观看| 一区二区三区在线高清| 在线一区亚洲| 麻豆91在线看| 日韩欧美不卡在线观看视频| 91精品国产综合久久久久久丝袜| 日本一区二区免费在线 | 日韩欧美亚洲区| 免费成人在线播放| 日韩亚洲欧美成人一区| 国产在线资源一区| 天涯成人国产亚洲精品一区av| 欧美色视频在线| 91美女视频网站| 亚洲精品伦理在线| 精品婷婷伊人一区三区三| 91视频在线看| 午夜精品成人在线视频| 日韩一区二区三区四区五区六区| 国产美女精品久久久| 天天做天天摸天天爽国产一区| 在线成人高清不卡| 国产青春久久久国产毛片| 日韩成人午夜电影| 久久在线免费观看| 亚洲国产激情一区二区三区| 国产成人精品www牛牛影视| 亚洲欧美影音先锋| 欧美日韩国产综合视频在线观看| 91麻豆swag| 奇米影视7777精品一区二区| 国产亚洲一区二区三区四区| 欧美一区二区综合| 国产99久久久久久免费看农村| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 岛国一区二区三区高清视频| 亚洲电影中文字幕在线观看| 日韩欧美中文字幕制服| 日本精品一区二区三区高清 久久| 免费国产亚洲视频| 国产亚洲综合在线| 欧美专区日韩专区| **欧美大码日韩| 欧美日韩dvd在线观看| 94-欧美-setu| 久久国产乱子精品免费女| 精品国产乱码久久久久久老虎| 国产一区二区在线网站| 麻豆精品在线观看| 久久网这里都是精品| 日韩欧美电影一区二区| 国产米奇在线777精品观看| 一区二区三区在线播放| 在线播放91灌醉迷j高跟美女 | 四虎影视永久免费在线观看一区二区三区| 九色综合狠狠综合久久| 亚洲精品午夜久久久| 这里只有精品视频在线观看| 久久久久久久久久久久久久一区| 一区二区三区在线观看网站| 久久日韩粉嫩一区二区三区| 日韩影视精品| 成人黄页在线观看| 亚洲欧美乱综合| 欧美高清视频在线高清观看mv色露露十八| 国产精品xxxx| 久久99精品国产麻豆不卡| 国产精品亲子乱子伦xxxx裸| 欧美xxxxxxxx| 色妹子一区二区| 国产精品久久久久久久久久久久午夜片 | 日韩片电影在线免费观看| 北条麻妃一区二区三区| 亚洲综合色婷婷| 欧美大片国产精品| 伊人久久婷婷色综合98网| αv一区二区三区| 国精产品一区一区三区mba桃花| 首页亚洲欧美制服丝腿| 中文字幕中文字幕在线一区 | 国产女主播在线一区二区|