一、准备工作
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')