HALCON示例程序classify_halogen_bulbs.hdev使用SVM分类器检测卤素灯泡的好坏

HALCON示例程序classify_halogen_bulbs.hdev使用SVM分类器检测卤素灯泡的好坏

示例程序源码(加注释)

  • 得到halcon默认图片存储路径
    get_system (‘image_dir’, HalconImages)

  • 获得操作系统类型
    get_system (‘operating_system’, OS)

  • OS{0:2}的意思是只选取OS里边的0,1,2三个字符
    if (OS{0:2} == ‘Win’)

    • 将字符串分割为预定义分隔符之间的子字符串。如果为windows就用;如果不是win系统就用:
    • 有一字符串为theboy:themen;thechild用 ';'分割分割为theboy:themen、thechild用 ':'分割分割为theboy、themen;thechild
      tuple_split (HalconImages, ‘;’, HalconImages)
      else
      tuple_split (HalconImages, ‘:’, HalconImages)
      endif
      ReadOK := false
  • 得到系统是否禁止错误对话框显示
    dev_get_preferences (‘suppress_handled_exceptions_dlg’, SaveMode)

  • 设置禁止错误对话框显示由try、catch捕获错误
    dev_set_preferences (‘suppress_handled_exceptions_dlg’, ‘true’)

  • 按照路径读取图片,如果读取不成功catch错误,显示读取图片出错
    for k := 0 to |HalconImages| - 1 by 1
    try
    read_image (Image, HalconImages[k] + ‘/halogen_bulb/halogen_bulb_01.png’)
    ReadPath := HalconImages[k] + ‘/halogen_bulb/’
    ReadOK := true
    break
    catch (Exception)
    endtry
    endfor
    if (not ReadOK)
    disp_message (WindowHandle, ‘Could not find the images in $HALCONIMAGES’, ‘window’, -1, -1, ‘black’, ‘true’)
    stop ()
    endif

  • 再将错误对话框显示恢复为默认模式
    dev_set_preferences (‘suppress_handled_exceptions_dlg’, SaveMode)

  • 读入图片
    read_image (Image, ‘halogen_bulb/halogen_bulb_01.png’)

  • 得到指向图片第一个通道的指针get_image_pointer1 (输入图像, 指针, 图片类型, 宽, 高)
    get_image_pointer1 (Image, Pointer, Type, Width, Height)

  • 开窗口与显示
    dev_close_window ()
    dev_open_window (0, 0, Width / 2, Height / 2, ‘black’, WindowHandle)
    set_display_font (WindowHandle, 14, ‘mono’, ‘true’, ‘false’)

  • 定义类名
    ClassNames := [‘good’,‘bad’,‘none’]

  • 定义颜色数组,用于显示不同类别
    Colors := [‘forest green’,‘red’,‘red’]
    Nu := 0.05
    KernelParam := 0.02

  • 创建一个svm分类器

  • create_class_svm (特征数,内核函数, 向量对其周围环境的影响量, 错误率,类数量, ‘模式’, ‘预处理’, 样本数量, SVM分类器句柄)
    create_class_svm (7, ‘rbf’, KernelParam, Nu, |ClassNames|, ‘one-versus-one’, ‘principal_components’, 5, SVMHandle)

  • 为SVM分类器添加样本,自定义函数
    add_samples_to_svm (ClassNames, SVMHandle, WindowHandle, ReadPath)
    for ClassNumber := 0 to |ClassNames| - 1 by 1
    list_files (ReadPath + ClassNames[ClassNumber], ‘files’, Files)
    从Files中选择图片格式为png的图片
    Selection := regexp_select(Files,’.*[.]png’)
    for Index := 0 to |Selection| - 1 by 1
    read_image (Image, Selection[Index])
    dev_display (Image)
    threshold (Image, Region, 0, 40)
    自定义函数
    calculate_features (Region, Features)

        求取region中心area_center (Region, Area, Row, Column)区域紧凑度compactness (Region, Compactness)计算区域二维不变矩moments_region_central_invar (Region, PSI1, PSI2, PSI3, PSI4)计算区域的凸度convexity (Region, Convexity)real将元组转换为浮点数的元组。Features := real([Area,Compactness,PSI1,PSI2,PSI3,PSI4,Convexity])return ()
    

    为svm分类器添加样本
    add_sample_class_svm(:: SVM句柄,特征向量,训练类别 ?
    add_sample_class_svm (SVMHandle, Features, ClassNumber)
    endfor
    endfor
    return ()

    dev_clear_window ()

  • 训练SVM分类器
    disp_message (WindowHandle, ‘Training…’, ‘window’, -1, -1, ‘black’, ‘true’)

  • 训练svn分类器train_class_svm (SVM分类器句柄, 梯度阈值, 训练模式)
    train_class_svm (SVMHandle, 0.001, ‘default’)
    disp_message (WindowHandle, ‘Training completed’, ‘window’, -1, -1, ‘black’, ‘true’)
    disp_continue_message (WindowHandle, ‘black’, ‘true’)
    stop ()

  • 自定义函数使用svm分类器进行识别
    classify_regions_with_svm (SVMHandle, Colors, ClassNames, ReadPath)
    list_files (ReadPath, [‘files’,‘recursive’], Files)
    Selection := regexp_select(Files,’.*[.]png’)
    read_image (Image, Selection[0])
    dev_close_window ()
    get_image_size (Image, Width, Height)
    dev_open_window (0, 0, Width / 2, Height / 2, ‘black’, WindowHandle)
    set_display_font (WindowHandle, 14, ‘mono’, ‘true’, ‘false’)
    for Index := 0 to |Selection| - 1 by 1
    read_image (Image, Selection[Index])
    threshold (Image, Region, 0, 40)
    自定义函数和上边做训练的是一个函数
    calculate_features (Region, Features)
    使用SVM分类器进行分类classify_class_svm(:: 分类器句柄,特征向量,最佳类数:识别结果)
    classify_class_svm (SVMHandle, Features, 1, Class)
    dev_display (Image)
    dev_set_color (Colors[Class])
    dev_display (Region)
    disp_message (WindowHandle, ‘Classified as:’ + ClassNames[Class], ‘window’, -1, -1, ‘black’, ‘true’)
    disp_continue_message (WindowHandle, ‘black’, ‘true’)
    stop ()
    endfor
    dev_display (Image)
    return ()

  • 清除SVM分类器,释放内存
    clear_class_svm (SVMHandle)

处理思路

这个例子介绍了create_class_svm 、add_sample_class_svm、train_class_svm、classify_class_svm 的使用方法,使用SVM分类器对元素的凸度与不变的结构向量进行分类。完成了对卤素灯泡的完整性的检测。

后记

大家有什么问题可以向我提问哈,我看到了第一时间回复,希望在学习的路上多多结交良师益友。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/255240.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php调用API支付接口(转自刘68)

首先访问 https://charging.teegon.com/ 注册账号, 找到开发配置 记下client_id和client_secret。 点击 天工开放平台 点击天工收银 点击 SDK下载与使用 选择php版下载 解压后获得 打开form.php这个是样板文件可以用它来测试是否成功,测试前需要先修…

S3C2440 SPI驱动框架

S3C2440 SPI驱动代码详细解读: https://www.linuxidc.com/Linux/2012-08/68402p4.htm 一、platform device and board_info /* /arch/arm/plat-s3c24xx*/static struct resource s3c_spi0_resource[] { [0] {.start S3C24XX_PA_SPI,.end S3C24XX_PA_SPI 0…

单目相机标定原理

一.相机标定主要涉及三个坐标系:图像坐标系、摄像机坐标系和世界坐标系 【图像坐标系】 摄像机采集的图像变换为数字图像后,每副数字图像在计算机内为M x N数组,M行N列的图像中每一个元素(pixel)数值就是图…

HALCON示例程序classify_image_class_gmm.hdev使用GMM分类器分割彩色图片

HALCON示例程序classify_image_class_gmm.hdev使用GMM分类器分割彩色图片 示例程序源码(加注释) dev_update_off () dev_close_window () dev_open_window (0, 0, 735, 485, ‘black’, WindowHandle) set_display_font (WindowHandle, 14, ‘mono’, …

Android开始之 activity_lifecycle和现场保护

生命周期: oncreate—onstart—onresume,--onpause--onstop,——onrestart——onstart——onresume,。。onpause。。。onstop。。。ondestroy 现在保护---保存系统状态 通过这个方法保存到数据库中或者xml中,&#xff…

Apache启动错误:could not bind to address[::]:443

Q:Windows环境下启动apache报错如下: 可是在httpd.conf文件中apache listen的明明是http 80端口,为什么会报443的错误? A:因为你的计算机安装了VM,所有有个vm的进程一直占用着443端口,在命令行下…

针孔相机拍摄的图像坐标和空间点的对应关系

一:摄像机成像原理 摄像机成像模型一般有三种:透镜投影模型(小孔摄像机模型)、正交投影模型和透视投影模型 光学中最基本的高斯成像公式:1/u 1/v 1/f (式一) 原理图如下: 二:认识三个…

window.onload中动态获得img的高度

$(function(){}); window.οnlοadfunction(){} $(function(){}) 是在DOM结构渲染完成以后调用的,这时候网页中一些资源还没有加载,比如图片等资源,但是DOM结构已经渲染成功了 window.onload是在网页DOM结构渲染完成,而且资源已经…

HALCON关于显示的函数与介绍(持续更新)

点击下方直达算子蓝色字体 目录1、dev_update_off ();dev_update_on2、dev_close_window ()3、dev_open_window( : : Row, Column, Width, Height, Background : WindowHandle)4、set_display_font( : : WindowHandle, Size, Font, Bold, Slant : )5、dev_set_draw(…

python -- 三元运算符

格式 : a if 条件 else b 示例 : 在 return 中使用 def com(a,b): # 返回最大值return a if a > b else b赋值时使用: l 1 if 2 > 1 else 2转载于:https://www.cnblogs.com/yanjingnan/p/6494786.html

矩阵乘法

矩阵乘法的通俗的我自己用的理解方式 CAB. 则Cij∑aikbkj (k属于那个范围),所以首先矩阵相乘的必须是A矩阵的列数等于b矩阵的行数。 第二就是C的意义了,cij表示A的第i行与B的第j列每个数对应相乘,因为上面的条件,所以A的第i行的数…

HALCON示例程序classify_image_class_knn.hdev使用KNN分类器对多通道图像进行分割

HALCON示例程序classify_image_class_knn.hdev使用KNN分类器对多通道图像进行分割 示例程序源码(加注释) 显示相关设置 dev_update_off () dev_close_window () dev_open_window (0, 0, 735, 485, ‘black’, WindowHandle) set_display_font (WindowH…

DELL XPS 9350 无线网卡DW1820A WIN7驱动异常解决

电脑型号:戴尔XPS 13 9350 故障现象: 安装完其他驱动都正常,打上官网的无线蓝牙一体驱动,只能驱动蓝牙,无线网卡无法驱动 故障解决: 开机F2,到Wireless选项现将蓝牙功能关闭,保存重启到windows下,将官网的无线驱动解压到文件夹,在设备管理器中选中未知的网络设备点更新驱动,手动…

粥做得好不好,全凭一个良心!

粥做得好不好,全凭一个良心! 工作不也是凭良心么! 文章中的红色字体表达了一切! 霜降节气的到来,意味着冬季的临近,而霜降后气温的降低,利于蔬菜的淀粉沉淀,收浆后的莲藕也变得更为…

内存分配详解 malloc, new, HeapAlloc, VirtualAlloc,GlobalAlloc

很多地方都会使用内存,内存使用过程中操作不当就容易崩溃,无法运行程序,上网Google学习一下,了解整理下他们之间的区别以及使用 ,获益匪浅 0x01 各自的定义和理解 (1)先看GlobalAlloc() GlobalAlloc()主要用于Win32应用…

黑盒测试

引言: 什么是黑盒测试呢!? 像我一样的测试小白就会望文生义了:对黑盒子测试 那么黑盒子是什么!? 思考5秒后,得出了这样的答案:黑盒子就是黑色的盒子,嘿嘿! 正文&#xf…

HALCON示例程序classify_image_class_mlp.hdev如何使用MLP分类器分割RGB图像

HALCON示例程序classify_image_class_mlp.hdev如何使用MLP分类器分割RGB图像 示例程序源码(加注释) 关于显示相关显示在其他帖子有介绍。 dev_update_off () dev_close_window () dev_open_window (0, 0, 735, 485, ‘black’, WindowHandle) set_disp…

Expo大作战(十二)--expo中的自定义样式Custom font,以及expo中的路由RouteNavigation

简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻个人修改补充…

悬浮按钮

效果图 //将dp转换为px public static int dip2px(Context context, float dpValue) {final float scale context.getResources().getDisplayMetrics().density;return (int) (dpValue * scale 0.5f); }//浮动图片监听 private void initListener() {//弹出对话框jianwen.set…

HALCON示例程序classify_image_class_svm.hdev使用SVM分类器对多通道图像进行分类

HALCON示例程序classify_image_class_svm.hdev使用SVM分类器对多通道图像进行分类 示例程序源码(加注释) 由于关于SVM分类器的使用之前的贴子介绍过,所以关于SVM的函数,直接点击函数可跳转到之前的介绍贴子。 显示函数解释 dev…