2017-08-22 74 views
0

该任务的目的是通过SVM对图像进行分类。变量'图像'应该包含图像信息,相应地labels包含图像标签。 imageslabels应该如何构建(什么格式和尺寸)?我试图unsuccesfully images是一个Python阵列(追加扁平图像),然后在另一种尝试,numpy的数组:如何在图像上训练OpenCV SVM分类器

images=np.zeros((number_of_images, image_size)) 
labels=np.zeros((number_of_images, 1)) 

svm=cv2.SVM() 
svm.train(images, labels) 

它是一个正确的解决问题的方法,如果是这样,什么是训练正确的方法分类器?

回答

2

我不认为你可以使用原始图像数据来训练SVM模型。好吧,你可以,但它不会很有成效。

的基本方法是提取一些功能从每个图像,并使用这些功能训练模型。一组功能形成了一个单词词典,其中每个单词都描述了您的图像。由于您使用相同的单词来描述每个图像,因此您可以比较与不同图像对应的功能。 This link介绍更多细节,请检查它。

接下来是什么?

  1. 选择适合您的算法中特征提取 - HOG,SURF,SIFT(link)从每个图像
  2. 提取特征。您将获得一个与图像数组长度相同的数组。
  3. 初始化袋的字(BOG)模型
  4. 列车SVM与加纳银行

相关链接:

  1. C++ vey detailed example
  2. Documentation for existing BOG classifier
+0

您可以使用原始图像数据训练SVM模型,这是非常有成果的。例如,R,G,B/L,a,b通道训练颜色校正模型。 –

+0

@RickM。但是我们正在讨论分类,不是吗? – CaptainTrunky