欧美成人黄色网_欧美精品久久_国产在线一区二区三区_免费视频久久久_亚洲二区视频_欧美大片免费高清观看

產品分類

當前位置: 首頁 > 工業電氣產品 > 端子與連接器 > 線路板連接器 > FFC連接器

類型分類:
科普知識
數據分類:
FFC連接器

機器視覺運動控制一體機應用例程(二) 顏色識別

發布日期:2022-04-25 點擊率:35

  • 關鍵詞:正運動技術,機器視覺,運動控制一體機


  • 摘要:前面課程講述的所有的機器視覺功能如形狀匹配、BLOB檢測、數據碼識別以及OCR等功能,我們都是對單通道的灰度圖像進行處理。


image.png


前面課程講述的所有的機器視覺功能如形狀匹配、BLOB檢測、數據碼識別以及OCR等功能,我們都是對單通道的灰度圖像進行處理。


本次課程我們將和大家一起分享使用ZDevelop軟件對采集到的彩色圖像進行顏色識別的實現方法。


一檢測原理


顏色是我們人眼能接收到的最直接的信息。在工業機器視覺的應用中,我們也可以根據提取到的顏色信息對待測特征進行判斷處理。


工業應用中使用到的顏色信息一般是3通道的顏色信息,每一個通道都由8bit的數據信息進行描述,因此機器視覺中通常處理的彩色圖像是24bit的圖像。


根據不同的顏色特征,采用不同的顏色空間模型對顏色通道進行描述,包括RGB模型、HSV模型、HSI模型。


(一)RGB模型


RGB模型是常用的顏色空間描述方式,它是通過對三色原紅(Red)、綠(Green)、藍(Blue)3中顏色的變化以及三種顏色不同的疊加情況呈現出不同的顏色效果。


 如下圖所示,紅、綠、藍每個顏色通道都由8bit圖像數據來描述,數值范圍(0~255)。每一種顏色都由三個顏色通道的數值來顯示。如(255,0,0)表示紅色,(0,255,0)表示綠色,(0,0,255)表示藍色,(255,255,255)表示白色,紅色和綠色的疊加表示黃色(255,255,0)。

image.png

RGB空間模型示意圖


(二)HSV模型


HSV模型包括了色調(Hue)、飽和度(Saturation)、純度(Value)。它對顏色的描述比RGB更接近人眼對色彩的感知。


HSV模型常用倒立的圓錐體來表示,如下圖所示。色調決定顏色的本質,它反映出人眼所看到的顏色如紅色或是藍色;飽和度表示顏色的深淺程度,它也是指含白色的數量程度,白色越多飽和度越低,顏色越淺;純度反映的是光對顏色的影響程度,從上往下看是一個由白到黑的一個變化過程。


image.png


(三)HSI模型


HSI模型使用了顏色三要素色調(Hue)、飽和度(Saturation)、亮度(Intensity)來描述顏色。


HSI模型常用上下對稱的圓錐體來表示,如下圖所示。色調決定顏色的本質,它反映出人眼所看到的顏色如紅色或是藍色;飽和度表示顏色的深淺程度;亮度反映的是顏色的亮暗程度,從上往下看,它是一個由亮變暗的一個變化過程。


image.png


(四)顏色識別


ZVision視覺指令中顏色識別的原理是先通過預先設置的RGB顏色通道的高低閾值范圍或者通過學習圖像上某一區域內的顏色特征生成顏色模型庫,然后在輸入圖像的指定區域選取某個檢測特征,將檢測特征和顏色模型庫中的顏色進行對比,輸出分數最高的顏色模型名稱。


二應用場景


1.分類計數


可以訓練學習所有不同顏色的產品,通過顏色識別對不同顏色的產品進行分類并進行計數。


2.提取待測目標特征


如果待測目標特征具有特定的顏色如紅色,可以通過提取紅色通道的顏色信息將彩色圖像進行二值化,突出待測目標特征。


3.輸出顏色信息


可以輸出待測產品目標的具體顏色信息。


三軟件演示


image.png


(一)實例演示

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


image.png


2.設計HMI啟動界面。


image.png


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


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

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

''table        說明                 table      說明

''11~12  鼠標操作時獲取的坐標        15~18 訓練學習ROI圖像坐標數據

''31~35  識別顏色ROI控件坐標數據    50    識別的顏色名稱

''41~42  識別顏色ROI中心圖像坐標數據  104    識別的顏色id

''70~85  識別顏色ROI繪制數據        98    輸入的識別分數

''25~28  訓練學習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


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


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


'相機種類,此處使用海康相機-"mvision"

GLOBAL DIM CAMERA_TYPE(100)

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

CAMERA_TYPE = "mvision"


'相機個數

GLOBAL cam_num

cam_num = 0


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

GLOBAL cam_mode

cam_mode = 0


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


'定義使用ROI標志,1-使用ROI,0-使用全圖像區域

GLOBAL DIM d_roi_arc_flag 

d_roi_arc_flag = 0


'定義鼠標按下標志位,1-已按下,0-未按下

GLOBAL DIM is_set_roi_m_down

is_set_roi_m_down = 0


GLOBAL DIM d_detect_time '定義消耗的時間變量

d_detect_time = 0


'定義程序執行過程中采集的圖像變量、顏色樣本模板變量和模板列表變量

GLOBAL ZVOBJECT grabImg,ColorMod,mod_list


'定義檢測識別顏色的ROI區域

GLOBAL DIM d_reg_roi(5)

d_reg_roi(0)=260

d_reg_roi(1)=210

d_reg_roi(2)=300

d_reg_roi(3)=225

d_reg_roi(4)=0

TABLE(31) = d_reg_roi(0) '將矩形ROI數據存放到起始地址為31的table數組中

TABLE(32) = d_reg_roi(1)

TABLE(33) = d_reg_roi(2)

TABLE(34) = d_reg_roi(3)

TABLE(35) = d_reg_roi(4)


'定義訓練學習顏色樣本的ROI區域

GLOBAL DIM d_learn_roi(4)

d_learn_roi(0)=260

d_learn_roi(1)=190

d_learn_roi(2)=300

d_learn_roi(3)=230

TABLE(25) = d_learn_roi(0) '將矩形ROI數據存放到起始地址為25的table數組中

TABLE(26) = d_learn_roi(1)

TABLE(27) = d_learn_roi(2)

TABLE(28) = d_learn_roi(3)


'定義輸入需要進行學習的顏色樣本名稱

GLOBAL DIM d_sample_name(128)

d_sample_name=""


'常用顏色變量

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_use_imgfile

d_use_imgfile=1


'定義本地圖片索引

GLOBAL DIM d_index


'定義讀取圖片的路徑

GLOBAL DIM File_Name(100)   


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


'初始化全局變量完成后開啟HMI文件

RUN"Hmi1.hmi",1

4.關聯HMI啟動界面值控件變量。


image.png


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


end


'注:

'凡是要使用Region有關的算子在系統初始化時都要調用ZV_RESETCLIPSIZE(width, height)這個算子設置下圖像尺寸,以滿足相機分辨率,因為默認的是640*480尺寸


'HMI界面初始化函數

GLOBAL SUB hmi_init()

    grab_switch = 0              '停止采集

    main_task_state = 1          '主任務停止運行

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

    ZV_LATCHSETSIZE(0, HMI_ConTROLSIZEX(10, 1), HMI_ConTROLSIZEY(10, 1)) '設置鎖存的大小

    TABLE(98)=60 '設置識別分數為60

    TABLE(50)=0

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

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

  

END SUB


image.png


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


image.png


說明:具體實現函數前面課程內容已經有操作演示,此處不做贅述。


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


end


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

    DIM is_redraw

    is_redraw = 0    

    DIM hit_pos,sr_mpos_x ,sr_mpos_y 


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

GLOBAL SUB update_roi()

    if d_roi_arc_flag = 1 then   '如果選擇ROI類型為矩形

        SET_REDRAW    

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

            '只有按下時可以改變擊中位置,獲取調整區域標志

            hit_pos = ZV_HMIADJRECT2(table(11), table(12), 31, -1) 

            is_redraw = 1    '將繪圖標志置1

        endif

  

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

             '調整ROI的位置

             ZV_HMIADJRECT2(table(11), table(12), 31, hit_pos)

             is_redraw = 1   '將繪圖標志置1

        endif

    

       if (MOUSE_state(11)) then

            '調整ROI的位置

            ZV_HMIADJRECT2(table(11), table(12), 31, hit_pos)

            is_redraw = 1   '將繪圖標志置1

       endif

    

        if (1 = is_redraw) then '繪制

            is_redraw = 0    '將繪圖標志置0

            ZV_POSTOIMG(0, 1, 31, 41)'將ROI的控件坐標數據轉到圖像坐標數據

            d_reg_roi(0) = TABLE(41)'將ROI的圖像坐標數據賦值給定義的變量

            d_reg_roi(1) = TABLE(42)

            '將ROI在控件坐標系下的寬度、高度轉到像素寬度,并賦值給定義的變量

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

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

            d_reg_roi(4) = TABLE(35)

            

            SET_REDRAW '全局繪制

        endif 

    else 

        SET_REDRAW  

    endif

END SUB


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

GLOBAL SUB draw_roi()

    if d_roi_arc_flag = 1 then '如果ROI類型為矩形

        SET_COLOR(C_BLUE)    '設置繪制時畫筆的顏色為藍色

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

        DRAWLINE(TABLE(70), TABLE(71), TABLE(72), TABLE(73)) '繪制外矩形

        DRAWLINE(TABLE(72), TABLE(73), TABLE(74), TABLE(75))

        DRAWLINE(TABLE(74), TABLE(75), TABLE(76), TABLE(77))

        DRAWLINE(TABLE(76), TABLE(77), TABLE(70), TABLE(71))

        

        '繪制矩形中心到右邊線中心的箭頭

         DRAWLINE(TABLE(78), TABLE(79), TABLE(80), TABLE(81))

         DRAWLINE(TABLE(82), TABLE(83), TABLE(80), TABLE(81))

         DRAWLINE(TABLE(84), TABLE(85), TABLE(80), TABLE(81))

    endif 

END SUB

image.png


8.點擊“元件”→“新建窗口”,新建訓練學習顏色模型窗口界面,并設計界面布局。


image.png


9.在main.bas文件中添加訓練學習顏色模型界面按下【訓練樣本】按鈕時響應的函數并關聯動作函數名。


'HMI界面按下訓練樣本按鈕時響應的函數

GLOBAL SUB btn_OpenLearning()

    ZV_LATCH(grabImg,0)

    HMI_SHOWWINDOW(11)

END SUB

image.png


10.在draw.bas文件中添加訓練學習顏色ROI更新繪制函數,并在自定義元件屬性窗口中關聯刷新函數和繪制函數。


'根據鼠標操作更新訓練顏色樣本的有效區域

GLOBAL SUB update_learnroi()


     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_learn_roi(0) = TABLE(15)

        d_learn_roi(1) = TABLE(16)

        d_learn_roi(2) = TABLE(17)

        d_learn_roi(3) = TABLE(18)

        SET_REDRAW  '重新繪制全部區域

    endif

  

END SUB


'根據更新的鼠標位置坐標繪制訓練顏色樣本區域

GLOBAL SUB draw_learnroi()

    '根據控件坐標數據繪制矩形

    DRAWRECT(TABLE(25), TABLE(26), TABLE(27), TABLE(28))

  

    local cx,cy   '定義局部變量

    cx = (TABLE(25) + TABLE(27)) / 2 '計算矩形的中心坐標x、y

    cy = (TABLE(26) + TABLE(28)) / 2

  

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

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

  

END SUB

image.png


11.在main.bas文件中添加訓練學習顏色模型界面按下【學習樣本】按鈕時響應的函數并關聯動作函數名。


'定義訓練顏色樣本界面按下學習樣本按鈕時響應的函數

GLOBAL SUB btn_Learning()


    ZVOBJECT region

    ZV_REGENRECT(region,d_learn_roi(0),d_learn_roi(1),d_learn_roi(2)-d_learn_roi(0)+1,d_learn_roi(3)-d_learn_roi(1)+1) '生成矩形區域

    if (STRCOMP(d_sample_name, "")=0) then 

         ?"請先輸入需要學習的顏色樣本名稱!"

         return 

    else 

         ZV_CLRGENMODELRE_(grabImg,region,ColorMod,d_sample_name,0)'在 RGB 顏色空間生成顏色模型

         ZV_LISTINSERT(ColorMod,mod_list,-1)    '將顏色模型插入到列表

         ?"學習"d_sample_name"樣本成功!"

    endif

  

END SUB

image.png


12.在main.bas文件中添加訓練學習顏色模型界面按下【清空樣本】按鈕時響應的函數并關聯動作函數名。


'定義訓練顏色樣本界面按下清空樣本按鈕時響應的函數

GLOBAL SUB btn_Clear()

    if(ZV_ISEMPTY(mod_list)=0) then '如果訓練樣本庫不為空

         ZV_CLEAR(mod_list)

         ?"已清空樣本列表!"

    endif

END SUB

image.png


13.在main.bas文件中添加訓練學習顏色模型界面按下【確定】按鈕時響應的函數并關聯動作函數名。


'定義訓練顏色樣本界面按下確定按鈕時響應的函數

GLOBAL SUB btn_Confirm()

    HMI_CLOSEWINDOW(11)

END SUB

image.png

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


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

GLOBAL SUB btn_test()

     TICKS=0

     ZVOBJECT regionMask

     TABLE(50)=0

     '

     

     if d_roi_arc_flag = 1 then '如果選擇的ROI類型是矩形

          '根據ROI數據生成旋轉矩形區域

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

     else

          '生成全圖像區域

           ZV_REGENFULLIMG(grabImg,regionMask)

     endif

     

     if(ZV_ISEMPTY(mod_list)=1) then '如果訓練樣本庫為空

          ?"顏色模型庫為空!"

          return

     else   

          ZV_CLRMODELCLASSIFY_(mod_list,grabImg,regionMask,128,50,104,98)'顏色識別 

     endif

     

     d_detect_time=abs(TICKS)

END SUB

15.在main.bas文件中添加HMI啟動界面按下【運行】按鈕響應的函數并關聯動作函數。


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

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

    endif

END SUB


'主任務執行的內容

main_task:

    while(1)

        if (0 = run_switch) then '如果主任務開關=0即停止運行按鈕按下時

            exit while           '退出循環

        endif

        

        '否則重復執行以下操作

        '執行單次采集響應函數獲取一幀圖像

        btn_grab() 

        '執行檢測識別顏色子程序          

        btn_test()

    wend

END

image.png


16.在main.bas文件中添加HMI啟動界面按下【停止】按鈕響應的函數并關聯動作函數。


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

GLOBAL SUB btn_stop()

    if(run_switch = 0) then  '如果主任務開關=0

         ?"未開啟連續運行!"     '提示未開啟循環任務,并退出子函數不往下執行

         return 

    endif

    run_switch = 0            '主任務開關置0,退出循環

END SUB

image.png


(二)仿真演示


image.png

image.png

image.png


本次,正運動技術機器視覺運動控制一體機應用例程(二)——顏色識別,就分享到這里。


更多精彩內容請關注“正運動小助手”公眾號,需要相關開發環境與例程代碼,請咨詢正運動技術銷售工程師:400-089-8936。


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


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

上一篇: 機器視覺運動控制一體

推薦產品

更多
主站蜘蛛池模板: 国精品人妻无码一区免费视频电影 | 曰本女人一级毛片看一级毛 | 色综合色国产热无码一 | 成人午夜福利视频镇东影视 | 成人18视频拍拍拍拍拍拍 | 国产精品高清全国免费观看 | 国产精品无码无在线观看 | 久久大香香蕉国产免费网站 | 久草在线中文888 | 免费观看a级毛片 | 77777_亚洲午夜久久多人 | 欧美黑人激情性久久 | 日本高清成本人视频一区 | 又粗又猛又黄又爽无遮挡 | 超清精品丝袜国产自在线拍 | 亚洲av午夜国产精品无码中文字 | 午夜影院操一 | 99久久免费看精品国产一区 | 高清一区二区三区视频 | 亚洲视频综合网 | 欧美.成人.综合在线 | 偷拍自拍视频网 | 国产禁女女网站免费看 | 免费日本一区 | 我想看一级黄色大片 | 国产毛多水多高潮高清 | 国内揄拍国内精品人妻 | 日韩一区二区三区在线播放 | 天天天天添天天拍天天谢 | 美女张开腿黄网站免费 | 欧美精品不卡 | 99热播| 精品久久久久久中文字幕无碍 | 国产 日韩 欧美 亚洲 | 日本在线网 | 欧美日韩 在线播放 | 国产精品久久久久久爽爽爽床戏 | 欧美亚洲激情视频 | 久久99国产精品一区二区 | 亚洲美女影院 | 日韩在线视频精品 |