<nobr id="zkazv"></nobr>

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

       今天,正運動技術為大家分享一下VPLC系列機器視覺運動控制一體機快速入門(四)——BLOB有無檢測。

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

        運動控制

        上期課程,我們講述了機器視覺方案中常用到的基于形狀匹配的視覺定位功能,通過上期課程我們掌握了使用ZDevelop軟件實現形狀匹配功能的方法。

        本期課程我們和大家一起分享機器視覺另一個檢測功能---使用BLOB檢測產品有無。

        運動控制

        BLOB又名斑點,是指在二值化圖像中暗背景上的一塊連通的亮區域或亮背景上一塊連通的暗區域。

        運動控制

        BLOB檢測是使用形態學方法(如二值化、膨脹、腐蝕等)將灰度圖像轉換成二值化圖像,轉換同時將檢測特征處理成BLOB斑點并將干擾因素處理成圖像背景,就可以準確地對檢測特征進行處理。

        運動控制

        1.依賴形態學處理

        需要將檢測圖像轉換成二值化圖像,并使用形態學處理圖像突出檢測特征。

        2.不關心形狀特征

        只要是連通的區域即可檢測,不限制產品的形狀。

        3.適合高對比度產品

        BLOB檢測要求檢測特征和背景要有較好的對比度,否則無法將特征和背景進行區分。

        4.執行速度快

        轉化成二值化圖像后搜索BLOB斑點不需要消耗太多時間。

        運動控制

        形態學處理是指對圖像的局部像素進行處理,用于從圖像中提取檢測過程中關心的局部特征細節。常用的形態學處理方法有二值化、膨脹、腐蝕、填充孔洞等。

         1 二值化

        將8位灰度圖像(灰度值0~255)轉換成非0即1的二值化圖像(純黑和純白組成的圖像)。

        運動控制

         2 填充孔洞

        在二值化圖像中,將某些小面積的黑色或白色的斑點區域進行填充,可過濾噪點。

        運動控制

         3 膨脹

        將二值化圖像中的白色區域擴大,黑色區域縮小,去除黑色小斑點干擾。

        運動控制

         4 腐蝕

        將二值化圖像中的黑色區域擴大,白色區域縮小,可去除白色小斑點干擾。

        運動控制

        運動控制

        BLOB檢測流程圖

         // 實例演示 //

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

        運動控制

      2、設計HMI界面。

        運動控制

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

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

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

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

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

        ''table 31-35,旋轉矩ROI參數,cx、cy、width、height、angle,控件坐標系

        ''table 41-45,旋轉矩形控件坐標轉換后對應的圖像坐標,圖像坐標系
       

        ''table 51-56,圓環ROI參數,cx、cy、圓環中線半徑r、圓環半寬ann_R、起始角度stAngle、角度范圍entAngle,控件坐標系

        ''table 61-66,圓環控件坐標轉換后對應的圖像坐標,圖像坐標系
       

        '主任務狀態

        '0 - 未初始化

        '1 - 停止

        '2 - 運行中

        '3 - 正在停止

        GLOBAL DIM main_task_state

        main_task_state = 1
       

        '采集開關

        '0 - 停止采集

        '1 - 請求采集

        GLOBAL DIM grab_switch

        grab_switch = 0
       

        '相機個數

        GLOBAL cam_num

        cam_num = 0
       

        '相機種類,"zmotion;mvision;basler;mindvision;huaray"

        GLOBAL DIM CAMERA_TYPE(16)

        CAMERA_TYPE = "zmotion"
       

        ' 定義主任務id - 10

        GLOBAL DIM main_task_id

        main_task_id = 10
       

        '定義連續采集任務id - 9

        GLOBAL DIM grab_task_id

        grab_task_id = 9
       

        '定義全局圖像變量

        GLOBAL ZVOBJECT grabImg '采集圖像

        GLOBAL ZVOBJECT binImg '二值化圖像

        GLOBAL ZVOBJECT disImg '顯示圖像
       

        '錯誤消息

        GLOBAL DIM error_msg(256)
       

        '定義常用顏色變量

        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)
       

        GLOBAL DIM d_roi_arc_flag '定義ROI類型標志:0-矩形,1-圓環

        GLOBAL DIM d_rlt_area '定義BLOB面積結果

        GLOBAL DIM d_rlt_state '定義狀態結果
       

        '旋轉矩形ROI參數:cx、cy、width、height、angle

        GLOBAL DIM d_roi_rect2(5) 'd開頭表示數據結構
       

        '圓弧ROI參數:cx、cy、圓環中線半徑r、圓環半寬ann_R、起始角度stAngle、角度范圍entAngle

        GLOBAL DIM d_roi_arc(6) 'd開頭表示數據結構
       

        '檢測參數:閾值模式(自動閾值或手動閾值)、低閾值、高閾值、極性(黑或白)、最小面積、最大面積、反向(即結果取反,成功變成失敗、失敗變成成功)

        GLOBAL DIM d_detect_param(7) 'd開頭表示數據結構
       

        '開/閉運算參數

        GLOBal DIM d_deal_value(2)
       

        '檢測的結果,依次為狀態結果、像素面積

        GLOBAL DIM d_detect_rst(2)
       

        '顯示打印的字符

        GLOBAL ShowString(64)
       

        '運行HMI文件

        RUN "Hmi.hmi",1 

      4、在detectParam.bas文件中初始化測量參數。

        end
       

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

           d_roi_arc_flag = 0 '默認為矩形

           d_rlt_area = 0

           d_rlt_state = 0

           d_deal_value(0)=1

           d_deal_value(1)=1
       

           '初始化roi參數

           d_roi_rect2(0) = 320.0 'roi中心x

           d_roi_rect2(1) = 240.0 'roi中心y

           d_roi_rect2(2) = 160.0 'roi寬

           d_roi_rect2(3) = 120.0 'roi高

           d_roi_rect2(4) = 0.0 'roi角度

           TABLE(31) = d_roi_rect2(0)

           TABLE(32) = d_roi_rect2(1)

           TABLE(33) = d_roi_rect2(2)

           TABLE(34) = d_roi_rect2(3)

           TABLE(35) = d_roi_rect2(4)
       

           d_roi_arc(0) = 320.0 'roi中心x

           d_roi_arc(1) = 240.0 'roi中心y

           d_roi_arc(2) = 60.0 '圓環中心線半徑

           d_roi_arc(3) = 20.0 '圓環半寬

           d_roi_arc(4) = 0.0 '起始角度

           d_roi_arc(5) = 360.0 '終止角度

           TABLE(51) = d_roi_arc(0)

           TABLE(52) = d_roi_arc(1)

           TABLE(53) = d_roi_arc(2)

           TABLE(54) = d_roi_arc(3)

           TABLE(55) = d_roi_arc(4)

           TABLE(56) = d_roi_arc(5)
       

           '初始化檢測參數:閾值模式(自動閾值 = 1 或 手動閾值 = 0)、低閾值、高閾值、極性(黑或白)、最大、最小、反向(即結果取反,成功變成失敗、失敗變成成功)

           d_detect_param(0) = 0 '手動閾值

           d_detect_param(1) = 128 '低閾值

           d_detect_param(2) = 255 '高閾值

           d_detect_param(3) = 1 '極性白,即檢測白色像素面積

           d_detect_param(4) = 60000 '最小面積,像素個數

           d_detect_param(5) = 90000 '最大面積

           d_detect_param(6) = 0 '結果不反向
       

        END SUB 

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

        運動控制

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

        'HMI界面初始化函數

        GLOBAL SUB hmi_init()

           grab_switch = 0

           main_task_state = 1

           ZV_RESETCLIPSIZE(1280, 1024) '初始化時依據圖像分辨率設置區域的裁剪尺寸,此處圖像分辨率為1280x1024

           ZV_LATCHSETSIZE(0, HMI_CONTROLSIZEX(10, 7), HMI_CONTROLSIZEY(10, 7)) '設置鎖存的大小
       

           init_detect_param() '初始化測量參數
       

           ZV_SETSYSDBL("CamGetTimeout", 1000) '設置采集超時

           ZV_LATCHCLEAR(0)

           ZV_LATCH(grabImg, 0)

        END SUB
       


      運動控制

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

        運動控制

        相機操作相關按鈕

        具體實現函數前期課程:

        VPLC系列機器視覺運動控制一體機快速入門(三)基于形狀匹配的視覺定位

        VPLC系列機器視覺運動控制一體機快速入門(二)相機的基本使用

        VPLC系列機器視覺運動控制一體機快速入門(一)軟硬件介紹及計數實例

        已經有操作演示,此處不做贅述。

      8、在draw.bas文件中添加檢測ROI更新繪制函數,并在自定義元件屬性窗口中關聯刷新函數和繪制函數。

        end
       

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

           DIM is_redraw

           is_redraw = 0
       

           DIM hit_pos
       

        '根據鼠標操作更新ROI位置區域函數

        GLOBAL SUB update_roi()

            if d_roi_arc_flag = 0 then

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

                    hit_pos = ZV_HMIADJRECT2(table(21), table(22), 31, -1) '只有按下時可以改變擊中位置

                    is_redraw = 1

               endif
       

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

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

                    is_redraw = 1

                endif
       

               if (MOUSE_state(21)) then

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

                   is_redraw = 1

               endif
       

               if (1 = is_redraw) then

                   is_redraw = 0

                   ZV_POSTOIMG(0, 1, 31, 41)

                   d_roi_rect2(0) = TABLE(41)

                   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

               endif

            else

               is_redraw = 0

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

                   hit_pos = ZV_HMIADJARC(table(21), table(22), 51, -1) '只有按下時可以改變擊中位置

                   is_redraw = 1

               endif
       

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

                   ZV_HMIADJARC(table(21), table(22), 51, hit_pos)

                   is_redraw = 1

               endif
       

               if (MOUSE_state(21)) then

                   ZV_HMIADJARC(table(21), table(22), 51, hit_pos)

                   is_redraw = 1

               endif
       

           if (1 = is_redraw) then

               is_redraw = 0
       

               '控件坐標轉圖像坐標

               ZV_POSTOIMG(0, 1, 51, 61)

               TABLE(63) = ZV_LENTOIMG(0, TABLE(53))

               TABLE(64) = ZV_LENTOIMG(0, TABLE(54))

               TABLE(65, TABLE(55), TABLE(56))
       

               d_roi_arc(0) = TABLE(61)

               d_roi_arc(1) = TABLE(62)

               d_roi_arc(2) = TABLE(63)

               d_roi_arc(3) = TABLE(64)

               d_roi_arc(4) = TABLE(65)

               d_roi_arc(5) = TABLE(66)

               SET_REDRAW
       

           endif

        end if
       

        END SUB
       

        'ROI區域更新后實時繪制ROI區域

        GLOBAL SUB draw_roi()

            if d_roi_arc_flag = 0 then

               SET_COLOR(C_BLUE)

               ZV_HMIRECT2(31, 300) '將旋轉矩形roi分解為HMI支持的繪圖圖元并添加控制參數,便于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))
       

            else

               SET_COLOR(C_BLUE)

               TABLE(57) = 1 '子區域的個數

               TABLE(58) = 5 '子區域寬度

               ZV_HMIARC(51, 400) '繪制圓環
       

               '繪制圓弧

               DRAWARC(TABLE(400), TABLE(401), TABLE(402), TABLE(404), TABLE(405)) '內半徑

               DRAWARC(TABLE(400), TABLE(401), TABLE(403), TABLE(404), TABLE(405)) '外半徑
       

                '繪制邊界線

                DIM idx

                for idx = 0 to TABLE(406)-1

                    DRAWLINE(TABLE(407+idx*4), TABLE(408+idx*4), TABLE(409+idx*4), TABLE(410+idx*4))

                next

            endif

        END SUB
       

        ↓

        運動控制

      9、在main.bas文件中添加HMI界面按下【測試】按鈕時響應的函數并關聯動作函數名。

        運動控制

        

        ↓

        'HMI界面按下測試按鈕時響應的函數

        GLOBAL SUB btn_test()

            ZVOBJECT regionWhite, regionMask, regionBlack,re_connecte
       

           '生成ROI區域

           if d_roi_arc_flag = 0 then

               ZV_REGENRECT2(regionMask, d_roi_rect2(0), d_roi_rect2(1), d_roi_rect2(2), d_roi_rect2(3), d_roi_rect2(4))

           else

               ZV_REGENANNULAR(regionMask, d_roi_arc(0), d_roi_arc(1), d_roi_arc(2) - d_roi_arc(3), d_roi_arc(2) + d_roi_arc(3))

           endif
       

        '二值化處理

        if d_detect_param(0) = 0 then '手動閾值處理
       

           ZV_RETHRESH(grabImg, regionMask, regionWhite, d_detect_param(1), d_detect_param(2))

           ZV_REOPENING(regionWhite,regionWhite,d_deal_value(0),d_deal_value(0))

           ZV_RECLOSING(regionWhite,regionWhite,d_deal_value(1),d_deal_value(1))
       

        else
       

           Dim autoThresh '自動閾值處理

           ZV_REAUTOTHRESH(grabImg, regionMask, regionWhite, 500)

           ZV_REOPENING(regionWhite,regionWhite,d_deal_value(0),d_deal_value(0))

           ZV_RECLOSING(regionWhite,regionWhite,d_deal_value(1),d_deal_value(1))

           autoThresh = TABLE(500)

           '? "autoThresh = " autoThresh
       

        endif
       

        '計算BLOB面積

        if d_detect_param(3) = 1 then '極性為白
       

           ZV_REAREA(regionWhite, 500) '計算regionWhite亮區域的面積

           d_rlt_area = TABLE(500) '將獲取的像素面積賦值給d_rlt_area變量

           ZV_RECONNECT(regionWhite,re_connecte) '計算區域的連通區域

           zv_refilter(re_connecte,0,60000,90000,0) '對區域列表中的區域進行過濾,保留面積在 60000 到 90000 的區域,面積不在此范圍的區域將被過濾掉

           ZV_LISTCOUNT(re_connecte,100) '獲取列表中的連通區域的數量

           ?"產品個數"TABLE(100)
       

        else '極性為黑
       

           ZV_REDIFF (regionMask, regionWhite, regionBlack)

           ZV_REAREA(regionBlack, 500)

           d_rlt_area = TABLE(500)
       

           ZV_RECONNECT(regionBlack,re_connecte) '計算區域的連通區域

           zv_refilter(re_connecte,0,60000,90000,0) '對區域列表中的區域進行過濾,保留面積在 60000 到 90000 的區域,面積不在此范圍的區域將被過濾掉

           ZV_LISTCOUNT(re_connecte,100) '獲取列表中的連通區域的數量

           ?"產品個數"TABLE(100)
       

        endif
       

        '對結果進行判斷

        if d_rlt_area > d_detect_param(4) and d_rlt_area < d_detect_param(5) then '面積結果在設定的面積上下限范圍內時

            d_rlt_state = 1

        else

            d_rlt_state = 0

        endif
       

        '是否反向的判斷

        if d_detect_param(6) then

            d_rlt_state = 1 - d_rlt_state

        endif
       

        '繪制效果圖

        Dim width, height

        ZV_IMGINFO (grabImg, 500)

        width = TABLE(500)

        height = TABLE(501)
       

        ZV_GRAYTORGB(grabImg,disImg)

        ShowString=TOSTR(TABLE(100),1,0) '將BLOB的數量轉換成字符串變量
       

        ZV_TEXT(disImg,"零件統計個數:"ShowString,10,80,80,ZV_COLOR(0,0,0)) '顯示結果文本
       

        ZV_REGION(disImg, regionMask, 0, ZV_COLOR(0,0,0)) '在disImg中繪制黑色的regionMask區域

        ZV_REGION(disImg, regionWhite, 0, ZV_COLOR(255,255,255)) '在disImg中繪制白色的regionWhite區域

        ZV_LATCH(disImg, 0)
       

        end sub
       

        ↓
      運動控制
       

      10、在main.bas文件中添加【運行】按鈕響應的函數并關聯動作函數。

        運動控制

        'HMI界面按下運行按鈕時響應的函數

        GLOBAL SUB btn_run()

               if(2 = main_task_state) then

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

               return

        endif
       

        if (1 = main_task_state) then

           if (0 = PROC_STATUS(main_task_id)) then

                   main_task_state = 2

                   RUNTASK main_task_id, main_task

               endif

           endif

        end sub
       

        main_task:

           while(1)

           if (3 = main_task_state) then

                   main_task_state = 1

                   exit while

               endif
       

               '執行采集和檢測函數

               CAM_SETPARAM("TriggerSoftware", 0)

                   CAM_GET(grabImg, 0)

               btn_test()
       

           wend

        END

        ↓

        運動控制

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

        運動控制

        

        'HMI界面按下停止按鈕時響應的函數

        GLOBAL SUB btn_stop()

           if (2 = main_task_state) then

               main_task_state = 3

           endif
       

        end sub


      運動控制

        運動控制

        

        本次,正運動技術VPLC系列機器視覺運動控制一體機快速入門(四)——BLOB有無檢測就分享到這里,更多精彩內容請關注“正運動小助手”公眾號。

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

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


       

      狀 態: 離線

      公司簡介
      產品目錄

      公司名稱: 深圳市正運動技術有限公司
      聯 系 人: 戴德弟
      電  話: 0755-32976042
      傳  真: 0755-2606 6955
      地  址: 深圳市寶安區西鄉洲石路陽光工業園A1棟5樓
      郵  編: 518100
      主  頁:
       
      該廠商相關技術文摘:
      強實時運動控制內核MotionRT750(七):us級高速交互之Qt,為智能裝備提速
      【2025上海工博會】高速高精運動控制卡應用預覽(一)
      強實時運動控制內核MotionRT750(六):us級高速交互之C++,為智能裝備提速
      解鎖光未來!9月 CIOE 2025,正運動邀您相聚深圳,共赴光電盛宴!
      機器視覺運動控制一體機在線路板跟隨灌膠上的應用
      強實時運動控制內核MotionRT750(五):EtherCAT總線冗余讓生產制造更可靠
      深圳·EelE智博會:智控賦能,驅動未來制造
      機器視覺運動控制一體機在喇叭跟隨點膠上的應用
      強實時運動控制內核MotionRT750(四):高速貼裝應用中的拱形運動
      聚焦深圳國際電子展 | 正運動攜熱門產品和方案!等您來體驗!
      超高速EtherCAT實時運動控制卡在高速半導體固晶機上的應用
      強實時運動控制內核MotionRT750(三):us級高速交互之C#,為智能裝備提速
      更多文摘...
      立即發送詢問信息在線聯系該技術文摘廠商:
      用戶名: 密碼: 免費注冊為中華工控網會員
      請留下您的有效聯系方式,以方便我們及時與您聯絡

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

      主站蜘蛛池模板: 国内揄拍国内精品少妇国语| 韩国精品一区二区三区在线观看| 日韩黄色av一区二区三区| 亚洲国产日韩A在线亚洲| 色欲国产精品一区成人精品| 欧美丰满熟妇xxxx性| 北岛玲亚洲一区二区三区| 蜜臀av一区二区国产精品| 亚洲性一交一乱一伦视频| 欧美亚洲h在线一区二区| 国产精品毛片一区视频播| 亚洲精品成人无限看| 人妻在线无码一区二区三区| 无码中文字幕热热久久| 中国女人内谢69xxxx| 人人妻人人澡人人爽| 无码精品国产VA在线观看DVD | 久久精品国产亚洲av麻| 色AV专区无码影音先锋| 国产精品99区一区二区三| 国产精品深夜福利在线观看| 99久久婷婷国产综合精品青草漫画 | 亚洲 成人 无码 在线观看| 日本污视频在线观看| 极品人妻少妇一区二区三区 | 午夜精品福利亚洲国产| 在线看片免费人成视久网| 国产精品一二三区视在线| 亚洲精品成人7777在线观看| 欧美熟妇乱子伦XX视频| 亚洲不卡av不卡一区二区| 成 人影片 免费观看| a毛片在线看片免费看| 日韩大片看一区二区三区| 久久综合色一综合色88欧美| 少妇人妻av毛片在线看| 国产强奷在线播放免费| 欧美激情一区二区| 免费国产好深啊好涨好硬视频| ww污污污网站在线看com| 美乳丰满人妻无码视频|