halcon案例text_line_orientation

隶属于:
C:\Users\Public\Documents\MVTec\HALCON-23.05-Progress\examples\hdevelop\OCR\Segmentation

此例,主要是点状字符的提取。一个有角度的字符,通过text_line_orientation获取字符角度,再旋转图片,图像Blob分析得到字符区域并显示。

读图
1
原图转正
2

进行点图处理2
灰度值拉伸1

二值化初步提取字符区域
1
再进一步提取字符区域
1
将字符扩大,选出真正的字符区域
1

得到单个字符的外接区域
1
膨胀得到字符外界区域

2

求矩形和点状区域1
显示。
显示可借鉴:颜色这么传入即可
dev_set_color ([‘green’, ‘cyan’])
dev_display (RegionDots)
2

dev_update_off ()
dev_close_window ()
dev_open_window (0, 0, 400, 300, 'black', WindowHandle)
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
dev_set_draw ('margin')
dev_set_line_width (2)
for J := 1 to 5 by 1
    read_image (Image, 'dot_print_rotated/dot_print_rotated_' + J$'02d')
    text_line_orientation (Image, Image, 48, rad(-30), rad(30), OrientationAngle)
    rotate_image (Image, ImageRotate, -OrientationAngle / rad(180) * 180, 'constant')
    dots_image (ImageRotate, ImageDots, 3, 'dark', 2)
    scale_image_max (ImageDots, ImageScaleMax)
    intensity (ImageRotate, ImageRotate, Mean, Deviation)
    threshold (ImageScaleMax, RegionThresh, Mean - 35, 255)
    connection (RegionThresh, ConnectedDots)
    select_shape (ConnectedDots, SelectedDots, 'area', 'and', 8, 1000)
    opening_circle (SelectedDots, SelectedDotsOpening, 1.5)
    union1 (SelectedDotsOpening, Region)
    closing_circle (Region, RegionClosing, 9.5)
    connection (RegionClosing, ConnectedRegions)
    * 连接分割的部分。

    smallest_rectangle1 (ConnectedRegions, Row11, Column11, Row21, Column21)
    gen_rectangle1 (Rectangle1, Row11, Column11, Row21, Column21)
    union1 (Rectangle1, RegionUnion3)
    connection (RegionUnion3, ConnectedRegions2)
    select_shape (ConnectedRegions2, SelectedRegions, ['area', 'height', 'width'], \
                  'and', [1000, 30, 20], [3200, 70, 70])
    * 获取矩形形状。

    smallest_rectangle1 (SelectedRegions, Row1, Column1, Row2, Column2)
    gen_rectangle1 (RectangularShape, Row1, Column1, Row2, Column2)
    *构建线条
    union1 (SelectedRegions, RegionUnion)
    dilation_rectangle1 (RegionUnion, RegionDilation, 50, 1)
    connection (RegionDilation, ConnectedLines)
    select_shape (ConnectedLines, SelectedLines, 'area', 'and', 10000, 99999)
    * 线条的元素。
    intersection (SelectedLines, RectangularShape, ElementOfLines)
    intersection (ElementOfLines, SelectedDotsOpening, RegionDots)
    dev_clear_window ()
    dev_display (ImageRotate)
    dev_set_color ('gray')
    dev_display (ElementOfLines)
    dev_set_color (['green', 'cyan'])
    dev_display (RegionDots)
    * 
    disp_continue_message (WindowHandle, 'black', 'true')
    stop ()
endfor
### Halcon 中 `gen_line` 函数的使用说明 #### 1. 功能概述 `gen_line` 是 HALCON 提供的一个基本几何绘图算子,用于生成一条直线。该算子通常与其他图形处理功能结合使用,例如绘制辅助线、标注边界或者作为其他算法的基础输入。 --- #### 2. 参数详解 以下是 `gen_line` 的参数及其含义: ```plaintext gen_line( : Line : RowBegin, ColBegin, RowEnd, ColEnd : ) ``` - **Line**: 输出参数,表示生成的直线对象句柄。 - **RowBegin**: 输入参数,指定直线起点的行坐标(y轴位置)。 - **ColBegin**: 输入参数,指定直线起点的列坐标(x轴位置)。 - **RowEnd**: 输入参数,指定直线终点的行坐标(y轴位置)。 - **ColEnd**: 输入参数,指定直线终点的列坐标(x轴位置)。 这些参数定义了一条从 `(RowBegin, ColBegin)` 到 `(RowEnd, ColEnd)` 的直线[^5]。 --- #### 3. 示例代码 以下是一个简单的示例,展示如何使用 `gen_line` 创建并显示一条直线: ```hdevelop * 定义直线的起始点和结束点 RowBegin := 50 ColBegin := 50 RowEnd := 150 ColEnd := 150 * 调用 gen_line 生成直线 gen_line (Line, RowBegin, ColBegin, RowEnd, ColEnd) * 显示直线到窗口中 dev_display(Line) ``` 上述代码会在当前活动窗口中绘制一条从 `(50, 50)` 到 `(150, 150)` 的直线[^6]。 --- #### 4. 应用场景 `gen_line` 可以应用于多种场合,包括但不限于: - 边缘检测后的可视化验证。 - 图像分割过程中辅助线的绘制。 - 结合 `gray_projections` 进行方向性特征分析时提供参考线[^1]。 - 在标定流程中绘制标定点之间的连接线[^4]。 --- #### 5. 注意事项 - 如果需要将直线保存为图像文件或其他格式,可以将其转换为 ROI 或者轮廓形式后再进一步操作。 - 当前版本支持浮点数类型的坐标值,因此可以直接传入精确的小数值而无需额外取整[^7]。 --- #### 6. 相关扩展 对于更复杂的需求,可以通过组合 `gen_contour_polygon_xld` 和其他算子来构建多边形或者其他形状的线条结构。例如,在某些情况下可能需要用高斯滤波器预处理图像再调用 `calculate_lines_gauss_parameters` 来优化线条提取效果[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值