阿里云网站的网页怎么做,魔改wordpress主题,中国城乡和住房建设部网站,老干部局网站建设的意义HALCON示例程序classify_halogen_bulbs.hdev使用SVM分类器检测卤素灯泡的好坏
示例程序源码#xff08;加注释#xff09; 得到halcon默认图片存储路径 get_system (‘image_dir’, HalconImages) 获得操作系统类型 get_system (‘operating_system’, OS) OS{0:2}的意思是…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、thementhechild 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分类器对元素的凸度与不变的结构向量进行分类。完成了对卤素灯泡的完整性的检测。
后记
大家有什么问题可以向我提问哈我看到了第一时间回复希望在学习的路上多多结交良师益友。