zoukankan      html  css  js  c++  java
  • halcon 学习笔记

    1、HsmartWindow 报错问题

    2、HwindowCtronl绘制图形未结束又点击绘制导致错误

    3、论坛转贴 常见问题

    4、找圆找线部分参数设置

     5、实现基于形状的模板匹配

    6、一维测量-卡尺

     7、直线/圆拟合

    ----------------------------------------------------------------

     1-- HsmartWindow 控件除了会调用halcondonet.dll外还会调用halcon.dll,如果程序根目录不存在halcon.dll,则会通过全局变量找到halcon mevtec目录去调用,这样是没有问题的;

    如果根目录下存在halcon.dll,则会优先调用根目录下的文件,然后halcon.dll内部如果使用到HsmartWindow的功能,则还会调用一个Hcanvas.dll的文件,如果根目录下没有这个文件则会报错,程序编译后启动过程中报错,

    报错内容为:

    ----------------------------------------------------------------------------------

    2-   HsmartWindow不支持Draw开头的函数,只能在Hwindow上面画,在执行Draw函数的时候,程序停在该函数位置,未点击鼠标右键确认Draw Region之前,程序会一直停留,此时再执行其他的Draw函数,就会导致在整个流程乱掉,避免这种情况的方法是在每个Draw函数之前都调用一次HalconApi.CancelDraw()函数,结束上次未完成的绘制。

    --------------------------------------------------------------------

     3--以下引用ihalcon学习网上帖子《转“Halcon基本问题解答”》

    http://www.ihalcon.com/read-4666.html

    ----------------------------------------------------------
    2. 裁剪图像;从图像上截取某段图像进行保存。如何实现该操作 ?


    首先应该知道,region不具有单独构成图像的要素,他没有灰度值。有用过opencv的应该知道 ROI(感兴趣区域),设置好它后,对图像的大部分操作就转为 图像的一个矩形区域内进行。类似的,halcon有domain 概念。 首先 设置好一个矩形区,然后使用 reduce_domain(是一个矩形区域)后,再使用crop_domain 就裁剪出图像。

    ----------------------------------------------------------------------------

    25. 屏幕/窗口截图 。


    使用dump_window_image 保存对应窗口截图,截图为当前肉眼所见图像,包括已经绘制到图像上的region,xld等。

    -------------------------------------------------------------------------------

    31.region或者xld绘制或画到图像上用哪个函数?


    Halcon绘制有paint和overpaint,区别是overpaint是绘制自身,paint输出可以是其他图像。

    -------------------------------------------------------------------------------------------------------------------------

    36.遍历文件夹,读取指定格式文件/图像。


    * 遍历文件夹D:/资料库/Downloads
    list_files ('D:/资料库/Downloads', ['files','follow_links'], ImageFiles)
    * 筛选bmp或jpg格式的文件
    tuple_regexp_select (ImageFiles, ['\.(bmp|jpg)$','ignore_case'], ImageFiles)

     --------------------------------------------------------------------------------------------------

    39.halcon里面有没有检测条码质量分析的算子?

    条码质量评测算子为 get_bar_code_result 。参见示例 print_quality_isoiec15416.hdev 。

    ------------------------------------------------------------

    4--  找圆找线工具,部分参数设置详解

    https://www.cnblogs.com/cumt-cwp/p/9713106.html

    5-halcon实现模板匹配

    reduce_domain (Image, Rectangle, ImageReduced)
    create_shape_model (ImageReduced, 4, 0, rad(360), rad(1), 'none', 'use_polarity', 30, 10, ModelID)
    //显示模板
    get_shape_model_contours (ShapeModel, ModelID, 1)
    hom_mat2d_identity (HomMat2DIdentity)
    hom_mat2d_translate (HomMat2DIdentity, Row, Column, HomMat2DTranslate)
    affine_trans_contour_xld (ShapeModel, ShapeModelTrans, HomMat2DTranslate)
    //寻找模板
        find_shape_model (ImageCheck, ModelID, 0, rad(360), 0.7, 1, 0.5, 'least_squares', 4, 0.7, RowCheck, ColumnCheck, AngleCheck, Score)
        count_seconds (S2)
        dev_display (ImageCheck)
        if (|Score| > 0)
            dev_set_color ('green')
            hom_mat2d_identity (HomMat2DIdentity)
            hom_mat2d_translate (HomMat2DIdentity, RowCheck, ColumnCheck, HomMat2DTranslate)
            hom_mat2d_rotate (HomMat2DTranslate, AngleCheck, RowCheck, ColumnCheck, HomMat2DRotate)
            affine_trans_contour_xld (ShapeModel, ShapeModelTrans, HomMat2DRotate)

    6-一维测量-卡尺

        gen_measure_rectangle2 (Rect1Row, Rect1Col, RectPhi, RectLength1, RectLength2, Width, Height, 'bilinear', MeasureHandle1)
    
    measure_pos()

    6-直线/圆拟合

    * Create the metrology model data structure
    create_metrology_model (MetrologyHandle)
    * The image size is set in advance to speed up the
    * first call of apply_metrology_model.
    set_metrology_model_image_size (MetrologyHandle, Width, Height)
    
    * Create two metrology line objects and set parameters
    add_metrology_object_line_measure (MetrologyHandle, LineRow1, LineColumn1, LineRow2, LineColumn2, Tolerance, 10, 1, 20, [], [], Index1)
    
    set_metrology_model_param (MetrologyHandle, 'reference_system', [Rows[0],Columns[0],0])
    
        * Use the top of the diamond to align the metrology model in
        * the current image
        * 
        align_metrology_model (MetrologyHandle, Rows[0], Columns[0], 0)
        * 
        * 
        * Perform the measurement for both lines in one call
        * 
        apply_metrology_model (Image, MetrologyHandle)
        * 
    
        get_metrology_object_result (MetrologyHandle, 'all', 'all', 'result_type', 'all_param', LineParameter)
    
        get_metrology_object_result_contour (ResultContour, MetrologyHandle, 'all', 'all', 1.5)
    
        get_metrology_object_measures (Contour, MetrologyHandle, 'all', 'all', MRow, MColumn)
  • 相关阅读:
    NPOIHelper
    NPOI.dll 用法:单元格、样式、字体、颜色、行高、宽度 读写excel
    SQL中的循环、for循环、游标
    .net mvc datatables中orderby动态排序
    MVC中给TextBoxFor设置默认值和属性
    定义实体系列-@JsonIgnoreProperties注解
    微信公众号登录与微信开放平台登录区别
    http-Post请求,Post Body中的数据量过大时出现的问题
    .net core Linux 安装部署
    二、微信公众号开发-获取微信用户信息(.net版)
  • 原文地址:https://www.cnblogs.com/kita/p/13297484.html
Copyright © 2011-2022 走看看