Halcon代码
cs
read_image (NinePointCalibration, 'D:/Desktop/halcon/ca74d-main/九点标定/NinePointCalibration.gif')
rgb1_to_gray (NinePointCalibration, GrayImage)
get_image_size (GrayImage, Width, Height)
dev_display (GrayImage)
* 获取当前显示的窗口句柄
dev_get_window (WindowHandle)
* 设置显示窗口的显示区域为整个图像大小
* 参数:窗口左上角x坐标,窗口左上角y坐标,窗口高度,窗口宽度
dev_set_part (0, 0, Height, Width)
threshold (GrayImage, Regions, 0, 142)
* 填充二值图像中的空洞(输入区域,输出填充后的区域)
fill_up (Regions, RegionFillUp)
* 开运算
opening_circle (RegionFillUp, RegionOpening, 3.5)
* 连接相邻的区域
connection (RegionOpening, ConnectedRegions)
* 根据形状特征(这里是面积)选择区域
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 2259.62, 5000)
*对选择的区域按某一特征排序
* 参数:输入区域,输出排序后的区域,排序特征('character'表示字符特征,这里按区域中心点排序),排序方向('true'表示升序),排序的参考方向(这里是按行排序)
sort_region (SelectedRegions, SortedRegions, 'character', 'true', 'row')
* 在排序后的区域中找到最小的外接圆
* 参数:输入区域,输出圆心的行坐标,输出圆心的列坐标,输出圆的半径
smallest_circle (SortedRegions, Row, Column, Radius)
* 生成一个十字标记,用于标记找到的圆心位置
* 参数:输出十字标记,十字中心点的行坐标,十字中心点的列坐标,十字标记的长度,十字标记的倾斜角度(0.785398弧度约等于45度)
gen_cross_contour_xld (Cross, Row, Column, 50, 0.785398)
* 显示原始灰度图像
dev_display (GrayImage)
* 显示生成的十字标记
dev_display (Cross)
-
图像读取 :首先,我们使用
read_image
函数读取存储在指定路径的图像文件。这个函数将图像加载到内存中,以便后续处理。 -
灰度转换 :由于许多图像处理算法在灰度图像上效果更好,我们使用
rgb1_to_gray
将RGB图像转换为灰度图像。 -
图像尺寸获取 :使用
get_image_size
获取图像的宽度和高度,这对于后续设置显示窗口和计算等很有用。 -
显示图像 :
dev_display
用于在HALCON的图形窗口中显示图像。 -
设置显示区域 :
dev_set_part
用于设置显示窗口的显示范围,这里设置为整个图像的大小。 -
阈值分割 :
threshold
函数将灰度图像转换为二值图像,通过设定一个阈值来区分前景和背景。 -
空洞填充 :
fill_up
函数用于填充二值图像中的空洞,使前景区域更完整。 -
形态学开运算 :
opening_circle
使用圆形结构元素对图像进行形态学开运算,可以去除小的噪声点。 -
区域连接 :
connection
函数将相邻的前景区域连接起来。 -
形状选择 :
select_shape
根据指定的形状特征(这里是面积)选择满足条件的区域。 -
区域排序 :
sort_region
根据指定的特征对区域进行排序。 -
最小外接圆 :
smallest_circle
在排序后的区域中找到最小的外接圆,这里我们假设这是我们要标记的目标圆形区域。 -
生成十字标记 :
gen_cross_contour_xld
生成一个十字标记,用于标记找到的圆心位置。 -
显示标记 :最后,使用
dev_display
显示原始图像和生成的十字标记。