halcon脚本-机器学习【SVM】


前言

利用halcon实现基于机器学习的SVM算法的分类器


一、halcon脚本

*************************************train***************************************
ImageDir:='../../DataSet/DataImage_Cls/DataImage'
ModelFile:='model_SVM.dat'
ClassFile:='classes.txt'

ImageDataList:=[]
ClassDataList:=[]
FeatureVector:=-1
list_files (ImageDir, 'directories', Dirs)
for Index1 := 0 to |Dirs|-1 by 1
    eachDir:= Dirs[Index1]
    list_files (eachDir, 'files', ImageFiles)
    for Index2 := 0 to |ImageFiles|-1 by 1
        eachfileName:= ImageFiles[Index2]
        parse_filename (eachfileName, BaseName, Extension, Directory)
        tuple_regexp_match (Directory, '.*/(.*?)/', Class_Name)
        tuple_concat (ImageDataList, eachfileName, ImageDataList)
        tuple_concat (ClassDataList, Class_Name, ClassDataList)
        if(FeatureVector==-1)
            read_image (Image, eachfileName)
            gen_features (Image, FeatureVector)
        endif
    endfor
endfor
tuple_uniq (ClassDataList, Class_Names)
open_file (ClassFile, 'output', FileHandle)
for Index3 := 0 to |Class_Names|-1 by 1
    fwrite_string (FileHandle, Class_Names[Index3])
    fnew_line (FileHandle)
endfor
close_file (FileHandle)
create_class_svm (|FeatureVector|, 'rbf', 0.02, 0.05, |Dirs|, 'one-versus-one', 'normalization', |FeatureVector|, SVMHandle)

for Indexfile:=0 to |ImageDataList|-1 by 1
    read_image (Image, ImageDataList[Indexfile])
    gen_features (Image, FeatureVector)
    tuple_find (Class_Names, ClassDataList[Indexfile], Indices)
    add_sample_class_svm (SVMHandle, FeatureVector, Indices)
endfor
*训练
train_class_svm (SVMHandle, 0.001, 'default')
write_class_svm (SVMHandle, ModelFile)
clear_class_svm (SVMHandle)
stop()
*************************************test***************************************
ModelFile:='model_SVM.dat'
ClassFile:='classes.txt'
TestImageDir:='../../DataSet/DataImage_Cls/test'
dev_close_window ()
dev_open_window (0, 0, 512, 512, 'white', WindowID)
dev_set_color ('black')
dev_set_draw ('margin')
dev_clear_window ()

ClassNames:=[]
open_file (ClassFile, 'input', FileHandle)
repeat
    fread_line(FileHandle, oneline, IsEOF)
    if(IsEOF == 1)
        break        
    endif
    if(oneline == ' ' or oneline=='/n')
        continue
    endif
    tuple_regexp_replace (oneline, '/n', '', oneline)
    tuple_regexp_replace (oneline, '\n', '', oneline)
    tuple_concat (ClassNames, oneline, ClassNames)
until (IsEOF)
close_file (FileHandle)
read_class_svm (ModelFile, SVMHandle)
list_image_files (TestImageDir, 'default', [], ImageFiles)
for Index := 0 to |ImageFiles|-1 by 1
    read_image (Image, ImageFiles[Index])
    gen_features (Image, FeatureVector_test)
    classify_class_svm (SVMHandle, FeatureVector_test, 1, Class)
    classname:= ClassNames[Class]
    stop()
endfor

总结

实现了基于svm的分类器

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱学习的广东仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值