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分类器对元素的凸度与不变的结构向量进行分类。完成了对卤素灯泡的完整性的检测。
后记
大家有什么问题可以向我提问哈,我看到了第一时间回复,希望在学习的路上多多结交良师益友。
HALCON示例程序classify_halogen_bulbs.hdev使用SVM分类器检测卤素灯泡的好坏相关推荐
- HALCON示例程序train_characters_ocr.hdev使用SVM分类器训练字体
HALCON示例程序train_characters_ocr.hdev使用SVM分类器训练字体 小哥哥小姐姐觉得有用点个赞呗! 示例程序源码(加注释) 蓝色字体均为算子解释链接,可以前往查看解答 关于 ...
- HALCON示例程序classify_image_class_svm.hdev使用SVM分类器对多通道图像进行分类
HALCON示例程序classify_image_class_svm.hdev使用SVM分类器对多通道图像进行分类 示例程序源码(加注释) 由于关于SVM分类器的使用之前的贴子介绍过,所以关于SVM的 ...
- HALCON示例程序classify_image_class_knn.hdev使用KNN分类器对多通道图像进行分割
HALCON示例程序classify_image_class_knn.hdev使用KNN分类器对多通道图像进行分割 示例程序源码(加注释) 显示相关设置 dev_update_off () dev_c ...
- HALCON示例程序classify_image_class_gmm.hdev使用GMM分类器分割彩色图片
HALCON示例程序classify_image_class_gmm.hdev使用GMM分类器分割彩色图片 示例程序源码(加注释) dev_update_off () dev_close_window ...
- HALCON示例程序rim.hdev轮圈孔检测提取字符
小哥哥小姐姐觉得有用点个赞呗! HALCON示例程序rim.hdev轮圈孔检测提取字符 示例程序源码(加注释) 关于显示类函数解释 dev_update_off () dev_close_window ...
- HALCON示例程序novelty_detection_dyn_threshold.hdev纱网缺陷检测
HALCON示例程序novelty_detection_dyn_threshold.hdev纱网缺陷检测 示例程序源码(加注释) 关于显示类函数解释 dev_update_window ('off') ...
- HALCON示例程序measure_metal_part_id.hdev使用xld边缘拟合检测零件加工是否合格
HALCON示例程序measure_metal_part_id.hdev使用xld边缘拟合检测零件加工是否合格 示例程序源码(加注释) 关于显示类函数解释 dev_update_off () Imag ...
- HALCON示例程序inspect_bottle_mouth.hdev玻璃瓶口缺陷检测
HALCON示例程序inspect_bottle_mouth.hdev玻璃瓶口缺陷检测 示例程序源码(加注释) 定义变量并初始化 SmoothX := 501 ThresholdOffset := 2 ...
- HALCON示例程序count_fish_sticks.hdev鱼棒完整性检测
HALCON示例程序count_fish_sticks.hdev鱼棒完整性检测 示例程序源码(加注释) 关于显示类函数解释 dev_update_off () dev_close_window () ...
最新文章
- 中山学院计算机学院家长座谈会,计算机科学与技术学院举办校友座谈会
- java base64解码出错_Java Base64解码错误及解决方法
- caffe模型文件解析_Caffe ImageData神经网络基本示例无法解析模型文件
- 利用melendy插入参考文献_四苯基卟啉在改性磷酸锆层间的插入及荧光增强
- 晶振波形不是正弦波_晶振的分类及其应用
- magento开启模板路径提示
- php 关闭 row,MySql php:检查Row是否存在
- sql 数据库检查_数据库检查点– SQL Server 2016中的增强功能
- 调整Linux磁盘分区大小
- Python 玩出花了!一文教你用 Python 制作吃豆人游戏! | 附代码
- c语言,指针与数组--指针与二维数组2
- 想知道如何批量压缩图片?来试试这几个图片压缩工具
- Matlab 划分网格,三维曲面,网格划分好之后还需要提取网格上的每个点的位置坐标,之后需要用这些点的坐标进行运算。望各位大佬解惑,感激不尽
- 北航超算运行matlab,超50万亿次!北航学子又破世界纪录,他们获得全球总决赛一等奖!...
- 测量计算机编程fx500,工程测量中fx-500P计算器基本程序.doc
- 我国数学家丁小平先生在微积分研究领域所取得的成就
- 透明、反光材质护肤品拍摄技巧
- --仿蓝色理想网站的导航菜单--
- 中国最美丽地方排行榜及游览最佳时间
- python羊车门问题的蒙特卡洛解法