Halcon投射变换和获取四边形顶点

例子中用到的图像:

接着是正文具体代码:

*参考例子:
*投射变换和二维码识别:2d_data_codes_rectify_symbol.hdev
*轮廓转线及调整直线:measure_metal_extended.hdev(例子中还有调整弧线,本例没有用到)

dev_set_draw ('margin')//设置填充模式
read_image (Image, 'code2d')//获取图片
threshold (Image, Region, 10, 90)//通过阈值分割,获取二维码的区域
shape_trans (Region, RegionTrans, 'convex')//把区域的边缘连接起来
gen_contour_region_xld (RegionTrans, Contours, 'border')//区域转轮廓
segment_contours_xld (Contours, ContoursSplit, 'lines', 5, 10, 1)//把轮廓断开成线
XCoordCorners := []//保存四边形的顶点X坐标
YCoordCorners := []//保存四边形的顶点Y坐标
*对轮廓进行排序,不排序会影响投射变换操作
sort_contours_xld (ContoursSplit, SortedRegions, 'lower_left', 'true', 'row')
count_obj (SortedRegions, Number)//获取区域数量
for Index := 1 to Number by 1
    select_obj (SortedRegions, ObjectSelected, Index)//遍历区域
    *把弯线变直
    fit_line_contour_xld (ObjectSelected, 'tukey', -1, 0, 5, 2, RowBegin, ColBegin, RowEnd, ColEnd, Nr, Nc, Dist)
    gen_contour_polygon_xld (Contour, [RowBegin,RowEnd], [ColBegin,ColEnd])//画线看效果
    tuple_concat (XCoordCorners, RowBegin, XCoordCorners)//保存X轴数据
    tuple_concat (YCoordCorners, ColBegin, YCoordCorners)//保存y轴数据
endfor
*标记出记录的点
gen_cross_contour_xld (Crosses, XCoordCorners, YCoordCorners, 6, 0.785398)
*获取投射变换参数HomMat2D
hom_vector_to_proj_hom_mat2d (XCoordCorners, YCoordCorners, [1,1,1,1], [70,270,270,70], [100,100,300,300], [1,1,1,1], 'normalized_dlt', HomMat2D)
*对图像进行投射变换
projective_trans_image (Image, Image_rectified, HomMat2D, 'bilinear', 'false', 'false')
*以下为对二维码的识别
create_data_code_2d_model ('Data Matrix ECC 200', [], [], DataCodeHandle)
find_data_code_2d (Image_rectified, SymbolXLDs, DataCodeHandle, [], [], ResultHandles, DecodedDataStrings)
clear_data_code_2d_model (DataCodeHandle)
area_center_xld (SymbolXLDs, Area, Row, Column, PointOrder)
*显示二维码解析到的数据
disp_message (3600, DecodedDataStrings, 'window', Row+160, Column-100, 'black', 'true')

  • 3
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值