• Halcon学习第一天(根据霍夫变换在图像中找直线)


    这是学习的第一个Halcon视觉案例:霍夫变换在图像中找曲线

    由于之前了解到的视觉是Ni Vision,对于Halcon也只是了解,今天从第一个例子作为入门。附上代码:

    {

    *读取一张图片
    read_image (Image, 'C:/Users/58937/Desktop/2222.png')

    *读取图片长宽
    get_image_size(Image,width,height)                      *这里读取当前内存图片Image的长宽

    *打开一个窗口
    dev_open_window (0, 0, width, height, 'black', WindowHandle)             *这里新建一个背景颜色黑色的窗口

    *根据坐标剪切矩形图像
    rectangle1_domain (Image, ImageReduced, 76, 50, 1000, 1000)           *这里是根据坐标裁剪图片,我试了要自己修改坐标

    *寻找图像中矩形边缘
    sobel_amp (ImageReduced, EdgeAmplitude, 'sum_abs', 3)                     *这里新建一个背景颜色黑色的图像窗口(这里得到的效果是当前图像里面矩形边缘,相当于同心的两个矩形)

    *设置输出对象颜色
    dev_set_color('red')                                                                                 *这里设置里面对象的颜色

    *对上面获取的边缘图像进行阈值操作                                                        *阈值的作用:得到一张对比度不同的黑白图像

    threshold(EdgeAmplitude,Region,10,255)

    *对阈值后的区域联通处理
    connection(Region,ConnectedRegions)                                                    *这样操作后图片中矩形边缘的两个同心矩形变成且可以一次被选中                                             

    *根据面积过滤出团中心矩形区域
    select_shape(ConnectedRegions,SelectedRegions,'area','and',250,99999)          *这样操作后图片中矩形边缘的两个同心矩形可以单独被选

    *霍夫变换寻找区域中的直线
    hough_lines(SelectedRegions,4,50,5,5,Angle, Dist)                                           *通过霍夫变换(就是根据Y=KX+b,采用Y和X的值生成的不同直线,这些直线都会有一个交点)这样就会有四个交点,也就是矩形的四个点

    *设置输出对象颜色
    dev_set_color('blue')                                                                                             *将所有直线颜色改为蓝色

    *将直线转换为区域
    gen_region_hline(Regions,Angle, Dist)                                                                *一个对象的轮廓(contour)作为链式码。

    *根据方向特征来过滤想要的直线
    select_shape(Regions,SelectedRegions1,'orientation','and',1.5,1.6)                    *筛选指定方向的直线
    select_shape(Regions,SelectedRegions2,'orientation','and',0,0.1)

    *显示图像和结果直线
    dev_display(Image)                                                                                                     *显示图片
    dev_display(SelectedRegions1)                                                                                 *显示筛选方向的直线
    dev_display(SelectedRegions2)

    }

    还是很多不懂不理解

  • 相关阅读:
    redis限流器的设计
    使用HystrixCommand封装http请求
    自定义的最简单的可回调的线程任务CallbackableFeatureTask(模仿google的ListenableFutureTask)
    通用的规则匹配算法(原创)(java+.net)
    redis缓存切面实现(支持缓存key的spel表达式)
    使用join和CountDownLatch来等待线程结束
    shell日常实战练习——通过监视用户登陆找到入侵者
    Nginx web服务器
    nginx——防盗链功能
    nginx 隐藏nginx版本号
  • 原文地址:https://www.cnblogs.com/LcVong/p/15460170.html
Copyright © 2020-2023  润新知