• 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)

    }

  • 相关阅读:
    Hook技术
    进程间的调试关系
    常见的2种断点方法
    CrackMe的简单破解
    PE文件结构
    DLL卸载
    DLL注入
    调用DLL的2种方式
    iOS密码输入框的实现
    UITableView.separatorInset
  • 原文地址:https://www.cnblogs.com/LcVong/p/15460135.html
Copyright © 2020-2023  润新知