一、準備工作
1.Halcon 讀取文件有四種方式:
- 文件->讀取圖像;
- 通過助手;
- 代碼
*方法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
- 直接將圖片拖動進入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')