Halcon入門學習筆記-(1)準備工作 & Halcon基本編程

觀看教程:Halcon機器視覺教程

一、準備工作

1.Halcon 讀取文件有四種方式:

  1. 文件->讀取圖像;
  2. 通過助手;

助手窗口

  1. 代碼
*方法1:讀取圖片
read_image (Image, '2-2案例用圖.bmp')
get_image_size (Image, Width, Height) //得到圖像Image的大小存儲在Width和Height
*讀取文件夾
list_files ('文件夾', 'files', Files)

for Index := 0 to 1 by 1
    read_image (Image, Files[Index])
endfor
  1. 直接將圖片拖動進入Halcon界面

2.圖片的動態讀取

是指每次運行程序時可以通過窗口選擇文件夾下的圖片,並將圖片路徑放在 Selection中儲存,其它三個參數保持默認值即可。

dev_open_file_dialog ('read_image', 'default', 'default', Selection) 

read_image (Image, Selection)

3.視頻的讀取

讀取視頻的本質就是將視頻轉換爲一幀幀的圖片(只能讀取avi格式的視頻)

*打開視頻
open_framegrabber ('DirectFile', 1, 1, 0, 0, 0, 0, 'default', 8, 'rgb', -1, 'false', '2-3視頻素材.avi', 'default', -1, -1, AcqHandle)


get_framegrabber_param (AcqHandle, 'first_frame', Value0)
get_framegrabber_param (AcqHandle, 'last_frame', Value1) 


grab_image_start (AcqHandle, -1)
for i:= Value0 to Value1-1 by 1 
    grab_image (Image, AcqHandle)
    get_image_size (Image, Width, Height)
    dev_display (Image)
    stop ()
endfor 

* close_framegrabber (AcqHandle)

4.快捷鍵

快捷鍵

二、Halcon基本編程

1.圖片的通道轉換

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
圖像的各種顏色空間模型參考:顏色空間/模型—— RGB, CMY/CMYK, HSI, HSV, YUV

dev_open_file_dialog ('read_image', 'default', 'default', Selection)
read_image (Image,Selection)
*通道分離
decompose3 (Image, r, g, b)
*彩色圖轉換爲灰度圖
rgb1_to_gray (Image, GrayImage)
*RGB通道轉換爲HSV通道
trans_from_rgb (r, g, b, h, s, v, 'hsv')

2.halcon 中算子的結構介紹

在這裏插入圖片描述
在這裏插入圖片描述

dev_close_window ()
* WindowHandle爲窗口名稱
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
* 畫圓操作,用鼠標左鍵在左側窗口中點擊並拖動可進行畫圓操作,畫完之後鼠標右鍵點擊既停止畫圓
draw_circle (WindowHandle, Row, Column, Radius)
*生成圓
gen_circle (Circle, Row, Column, Radius)
* 獲得區域特徵
region_features (Circle, 'area', Value)
* 生成連通域,輸入爲對象,輸出也爲對象。
connection (Circle, ConnectedRegions)
* 進行形狀選擇,選擇面積是150~99999的區域。
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 150, 99999)

在這裏插入圖片描述在這裏插入圖片描述

3.數組的創建及基本運算

在這裏插入圖片描述

dev_open_file_dialog ('read_image', 'default', 'default', Selection)
read_image (Image, Selection)

rgb1_to_gray (Image, GrayImage)

*獲得圖像的區域
get_domain (GrayImage, Domain)
* 獲得圖片的行列數組
get_region_points (Domain, Rows, Columns)
* 獲得圖片的寬高
get_image_size (GrayImage, Width, Height)
gen_image_const (Image1, 'byte', Width, Height)

*獲得圖像的灰度值存儲在Grayval
get_grayval (GrayImage, Rows, Columns, Grayval)

*循環,改變圖像中的像素值
for Index := 1 to 100 by 1
    Grayval[Index]:=255
endfor
*重新設置圖像的灰度值
set_grayval (Image1, Rows, Columns, Grayval)

在這裏插入圖片描述

4.矩陣的創建及其基本運算

在這裏插入圖片描述

*矩陣的創建
m:=[1,2,3,4]
create_matrix (2, 2, [1,2,3,4], MatrixID)

*獲取值
get_value_matrix (MatrixID, 1, 0, Value)
get_full_matrix (MatrixID, Values)

*矩陣的逆

invert_matrix (MatrixID, 'general', 0, MatrixInvID)
get_full_matrix (MatrixInvID, Values1)

*矩陣的範數
norm_matrix (MatrixInvID, '2-norm', Value1)


A:=[1,5,7,8,9,10]
tuple_length (A, Length)
create_matrix (3, 2, A, MatrixID1)
get_full_matrix (MatrixID1, Values2)

5.基本編程結構介紹

在這裏插入圖片描述


a:=1
b:=10
c:=3

z:=0
if ((a<b or a<c) and b<c)
    z:=1
endif

max1:=0
d:=[a,b,c]
for i := 0 to |d|-1 by 1
    if (d[i]>max1)
        max1:=d[i]
    endif
endfor

max3:=0
i:=0
while (i<=2)
    if (d[i]>max3)
        max3:=d[i]
    endif
    i:=i+1
endwhile

6.halcon 機器視覺實現步驟介紹

在這裏插入圖片描述

read_image (Image, '素材')
decompose3 (Image, R, G, B)
trans_from_rgb (R, G, B, H, S, V, 'hsv')

*圖像預處理
mean_image (H, ImageMean, 3, 3)
threshold (ImageMean, Region, 0, 60)
fill_up (Region, RegionFillUp)

connection (RegionFillUp, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 8000, 99999)

dev_display (Image)
dev_display (SelectedRegions)

dev_display (Image)
boundary (SelectedRegions, RegionBorder, 'inner')
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章