不想吐槽Emgucv了,版本更新太快,教程又跟不上。 官网上的SVM示例是基于2.4.*之前的,唯一的差别是SVMParams 这个单独的类不见了,换直接在SVM类里面设置。
改完这部份后还报一个:System.DivideByZeroException:“尝试除以零。”的错误,这个错误比较简单,分类标签的类型从float改为int就行了(外网上看到的,反正改完能用就没管原理。)
以下代码在Emgucv 3.2版本下编译通过了,3.3版本没试过,用过的同学给个回复。图片中的前几个ML的例子都调通了,唯独最后的一个EM算法没调通,和SVM一样的问题,但资料太少,以后再尝试了。
int trainSampleCount = 150;
int sigma = 60;
#region Generate the training data and classes
Matrix<float> trainData = new Matrix<float>(trainSampleCount, 2);
Matrix<int> trainClasses = new Matrix<int>(trainSampleCount, 1);
Image<Bgr, Byte> img = new Image<Bgr, byte>(500, 500);
Matrix<float> sample = new Matrix<float>(1, 2);
Matrix<float> trainData1