• 重新看halcon模板匹配


    工业中模板匹配有很多需求。

    代码如下:

    read_image (Image, 'J:/测试图片/test1/1.bmp')
    get_image_size (Image, Width, Height)
    gen_rectangle1 (Rectangle, 1057.01, 1698.27, 1241.98, 1898.29)
    *gen_rectangle1 (Rectangle, 449.726, 813.267, 669.604, 1005.06)
    area_center (Rectangle, Area, RowRef, ColumnRef)
    reduce_domain (Image, Rectangle, ImageReduced)
    create_ncc_model (ImageReduced, 'auto',rad(-45), rad(90), 'auto', 'use_polarity', ModelID)
    
    
    
    
    
    for J := 1 to 1 by 1
        read_image (Image1, 'J:/测试图片/test1/9.bmp')
        find_ncc_model (Image1, ModelID,rad(-45), rad(90), 0.5, 1, 0.5, 'true', 0, Row, Column, Angle, Score)
        vector_angle_to_rigid ( Row, Column, Angle, RowRef, ColumnRef, 0, HomMat2D1)
        affine_trans_image(Image1, ImageAffinTrans, HomMat2D1, 'constant', 'false')
        write_image(ImageAffinTrans, 'bmp', 0, 'J:/测试图片/test1/91.bmp')
        xb:=abs(Column-ColumnRef)
        yb:=abs(Row-RowRef)
     
    endfor
    clear_ncc_model (ModelID)

    模板匹配关键就是获取以下的矩阵

    tx ty就是平移量,R矩阵就是旋转,实际上和旋转角度相关。

      vector_angle_to_rigid ( Row, Column, Angle, RowRef, ColumnRef, 0, HomMat2D1)这个代码就是获得上述矩阵的。 前面是输入图像,后面是匹配后的图像,HomMat2D1就是从输入图像通过这个矩阵转化为匹配后的图像。
    因此,如果我们希望从匹配后的图像转化到输入图像的位置,只需要将二者的输入调换。

        affine_trans_image(Image1, ImageAffinTrans, HomMat2D1, 'constant', 'false') 这个代码就可以将图像进行仿射变换,只要指定仿射变换的矩阵。


    
    
    
  • 相关阅读:
    java--键盘事件类,按下回车则模拟鼠标
    java记录之数据库操作编写程序实现用户登录、注册、修改密码
    Java记录之简易记事本
    java记录之Date的使用
    java常用实用类的使用
    java组件练习之复数计算器和下拉框联动
    Java记录参数传递和split
    Java记录--简单的继承
    JVM调优
    linux学习1-------------环境部署搭建
  • 原文地址:https://www.cnblogs.com/love6tao/p/9457730.html
Copyright © 2020-2023  润新知