我正在使用OpenCV 2.4和Python 2.7。哪些图像特征可以用于SVM分类?我已经了解了SURF和SIFT,但作为初学者,我觉得这些对我来说非常困难。还有其他什么特征提取技术吗?
回答:
如果你正在寻找最简单的表示方式,那么这将对你有帮助。这两个方法与SIFT和SURF相比非常简单
- 位图表示
- HOG-梯度直方图
SVM是一种用于数据分类的机器学习模型。我已经构建了一个简单的SVM分类器。如果你有两个文件夹的图像,鸟类和松鼠。我遵循的步骤是
-
提取图像的HOG特征并将它们添加到列表中
for file in listing1: img = cv2.imread(path1 + file) res=cv2.resize(img,(250,250)) h=hog(res) training_set.append(h)
-
也添加标签
training_labels.append(1)
-
将两个列表转换为numpy数组。
trainData=np.float32(training_set)responses=np.float32(training_labels)
-
训练SVM
svm.train(trainData,responses, params=svm_params)
-
测试SVM
result = svm.predict_all(testData)print result