Halcon入门学习笔记-(1)准备工作 & 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')
发布了6 篇原创文章 · 获赞 4 · 访问量 7228

猜你喜欢

转载自blog.csdn.net/qq_32939413/article/details/104077941